17
$\begingroup$

Consider the code

a = Table[BesselJ[i, x], {i, 0, 3}]
Plot[a, {x, 0, 20}, Axes -> False]

producing

enter image description here

I'd like to transform the plot into a circle. In other words, I'd like to wrap the plot around a circle.

I found PolarPlot[{1, 1 + 1/10 Sin[10 t]}, {t, 0, 2 Pi}] producing

enter image description here

which looks like a sin curve wrapped around the circle.

I know that the result would not be smooth closed, but no problem.

$\endgroup$
  • 2
    $\begingroup$ c[x_] := Table[BesselJ[i, x], {i, 0, 3}]; PolarPlot[ 3 + # & /@ c[10 t], {t, 0, 2 Pi}] $\endgroup$ – Dr. belisarius Oct 30 '14 at 23:27
  • $\begingroup$ @belisarius, perfect! Since I'll use 4 colours to each graph, how to pass the colours to PolarPlot? I tried PlotStyle but no success. $\endgroup$ – Sigur Oct 30 '14 at 23:30
  • $\begingroup$ Why closing vote? $\endgroup$ – Sigur Oct 31 '14 at 14:15
20
$\begingroup$

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

$\endgroup$
  • $\begingroup$ FOr v9 you need to use PolarPlot[Evaluate@funcs, {x, 0, 2 \[Pi]}] to get separate colors. (+1) $\endgroup$ – kglr Oct 30 '14 at 23:40
  • $\begingroup$ Nice! I'm trying to plot my graphs on a symmetric range around zero (for example, {x,-10,10}) and then I'd like the middle part pointing to north, that is, f(0) onto the vertical axis. $\endgroup$ – Sigur Oct 30 '14 at 23:46
  • 1
    $\begingroup$ @Sigur Try this: PolarPlot[funcs /. x -> y - π/2 // Evaluate, {y, 3π/2, -π/2}] $\endgroup$ – rm -rf Oct 30 '14 at 23:53
  • $\begingroup$ @rm-rf, thanks. It works. The constant circle was confusing me :) $\endgroup$ – Sigur Oct 30 '14 at 23:57
  • $\begingroup$ Well, if we change a little bit the domain we can do it symmetric from the north to the south. $\endgroup$ – Sigur Oct 31 '14 at 0:44
16
$\begingroup$
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

$\endgroup$
  • $\begingroup$ @JunhoLee I find yours better bacause it is shorter :) Thanks, well, one could probably argue about colors :P p.s. I like the gradient in background which isn't there :) $\endgroup$ – Kuba Oct 31 '14 at 0:39
  • $\begingroup$ @Kuba, amazing. Very beautiful. Since I'm doing a logo, unfortunately I can not use yours. But thanks for some idea. $\endgroup$ – Sigur Oct 31 '14 at 0:41
  • 2
    $\begingroup$ Now I know how they designed Amidala's hair. $\endgroup$ – Öskå Oct 31 '14 at 1:10
  • $\begingroup$ @Öskå It's not easy to be hairdresser there days :P $\endgroup$ – Kuba Oct 31 '14 at 1:13
  • 1
    $\begingroup$ @Kuba Not to mention how hat it was during Bessel's time-frame en.wikipedia.org/wiki/Friedrich_Bessel#mediaviewer/… $\endgroup$ – Dr. belisarius Oct 31 '14 at 3:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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