Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

For given dataset

data = Re[Zeta[1/2 + I Range[0, 100, 0.01]]];

It is nice that Mathematica can plot data in both Cartesian and Polar coordinates.

SetOptions[ListPolarPlot, Joined -> True];
#[data] & /@ {ListLinePlot, ListPolarPlot}

enter image description here

WaveletScalogram is an insightful glance in temporal data:

cwd = ContinuousWaveletTransform[data, GaborWavelet[6], {4, 12}, WaveletScale -> 100];
ws = WaveletScalogram[cwd, All, Re, ColorFunction -> "CherryTones"]

enter image description here

Is it possible to somehow visualize it in Polar coordinates?

I would try to extract the data from underlying Graphics, but it is a raster

ws[[1]] // Head
ws[[1, 1]] // Dimensions
Raster
{48, 5001}

The only thing that comes to mind is ImageTransformation but I don’t think it is an efficient way (will be hard to scale the axis, etc.). Any advice is appreciated.

share|improve this question
    
In Mathematica wavelets data is stored at ContinuousWaveletData or DiscreteWaveletData. You can check the doc. You can try InverseContinuousWaveletTransform[cwd] // ListPolarPlot to polar plot the resulted wavelet. the Properties of the data are "DataChannels", "DataDimensions", "DataMean", "DataWrapper", "LinearScalogramFunction", "ListPlot", "LogScalogramFunction", "Octaves", "Properties", "SampleRate", "Scales", "Voices", "Wavelet", "WaveletIndex", "WaveletScale". If you see the properties there is no polar plot by default. –  s.s.o Sep 9 '13 at 7:16

3 Answers 3

I found a way to do this thanks to the more simple question I posted here:

Wrapping ArrayPlot or MatrixPlot around a circle

but it takes a very long time to compute. So I will post the answer but I hope someone will post a faster solution.

cwd = ContinuousWaveletTransform[data, GaborWavelet[6], {4, 12}, WaveletScale -> 100];
ws = WaveletScalogram[cwd, All, Re, ColorFunction -> "CherryTones"];

SectorChart[
 Map[Style[{1, 100}, ColorData["SunsetColors"][#]] &, 
  ws[[1, 1]][[All, 1 ;; -1 ;; 10]], {2}], PerformanceGoal -> "Speed", 
 ChartStyle -> EdgeForm[None], Background -> Black]

enter image description here

So this is beautiful and it looks exactly as I need. But it took so very long and I would really appreciate and wait if someone posts a faster solution.

share|improve this answer
    
Looks like your polar axis goes to the left. You should flip the image horizontally. –  panda-34 Sep 24 '13 at 7:32

We can visualize the wavelet scalogram using ListPolarPlot

data = Re[Zeta[1/2 + I Range[0, 100, 0.01]]];
cwd = ContinuousWaveletTransform[data, GaborWavelet[6], {4, 12}, WaveletScale -> 100];

ListPolarPlot[Abs@Reverse[Last /@ cwd[All]], ColorFunction -> "Rainbow"]

Plot

Additionally we can see the scalogram in 3D using ListPlot3D:

 ListPlot3D[Abs@Reverse[Last /@ cwd[All]], PlotRange -> All, 
            Mesh -> None, ColorFunction -> "AtlanticColors", 
            Ticks -> {Automatic, None, Automatic}, 
            AxesLabel -> {"time", "octaves", "magnitude"}, Boxed -> False]

Plot2

Note: The usage of AxesLabel in the second plot is just an example.

share|improve this answer
    
@Darya Is this the solution ? –  Sektor Sep 10 '13 at 8:07
    
Thanks, Nicola, this is interesting, but I hoped to see something reminiscent of original WaveletScalogram visual in polar coordinates. –  Darya Aleinikava Sep 23 '13 at 5:16

So, the scalogram is a raster, so what? Why does it deter you from just wrapping it around the pole?

ws = WaveletScalogram[cwd, All, Re, ColorFunction -> "CherryTones", 
  Axes -> False, PlotRangePadding -> None, AspectRatio -> 1]

ImageTransformation[ws, {(ArcTan @@ (0.5 - #) + Pi)/(2 Pi),2 Norm[0.5 - #]} &]

Polar scalogram

share|improve this answer
    
I think this ought to be the accepted answer. –  DumpsterDoofus Jan 30 at 2:21

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.