How to wrap a plot around a circle?

Update

ticks[x1_, x2_] := {#/10 + π/2, #} & /@ 
  FindDivisions[{10 (x1 - π), 10 (x2 - π)}, 20]

funcs = Table[3 + BesselJ[i, 10 (x -π/2)], {i, 0, 3}];
PolarPlot[funcs // Evaluate, {x, -π/2, 3π/2}, 
    PolarAxes -> Automatic,
    PolarTicks -> {ticks[0, 2 π][[2 ;; -2]], Automatic}
] (*thanks @kguler 's and @rm-rf 's advice*)

enter image description here

Manipulate version

Manipulate[
 funcs = Table[a BesselJ[i, 10 (x -π/2)] + b, {i, 0, n}];
 PolarPlot[funcs // Evaluate, {x, -π/2, 3π/2},
  Axes -> False] , {{n, 4}, 1, 10}, {{a, 1}, 0, 3}, {{b, 3}, 1, 5},
 ControlType -> {Automatic, VerticalSlider, VerticalSlider},
 ControlPlacement -> { Top, Left, Left}]

enter image description here

Original

funcs = Table[3 + BesselJ[i, 10 x], {i, 0, 3}]
PolarPlot[Evaluate@funcs, {x, 0, 2 π}] (* thanks @kguler's advice *)

Blockquote


Composition[
   {#, Scale[#, {-1, 1}, {0, 0}]} &,
   Rotate[#, Pi/2, {0, 0}] &,
   First
   ] /@ Table[
   With[{root = FindRoot[D[BesselJ[i, x], x], {x, 100}][[1, 2]]},

    PolarPlot[{1 + BesselJ[i, t root/Pi]}, {t, 0, Pi}, 
     PlotStyle -> {Thick, Blend["AvocadoColors", i/15]}]
    ]
   , {i, 0, 15}] // 
 Graphics[#, ImageSize -> 500, Background -> Orange] &

enter image description here

Tags:

Plotting