Great Answers to
Questions About Everything


I apologize if this is a obvious question and answer, I don't often use Mathematica to display plots or graphics in general to be honest. So, I was tutoring my cousin yesterday in relation to Polar functions and decided to bring up Mathematica to illustrate some of the ideas we were discussing. I quickly typed a one line command into Mathematica 8 and got an odd result. When rendering a polar function, Mathematica took a few seconds to make it smooth. Prior to this it has too many lines (see picture, before is on left and after is on the right.)

The code is:

Manipulate[PolarPlot[Sin[nS*t], {t, -5 Pi, 5 Pi}], {nS, 1, 20, 1}]

Mathematica graphics

Does anyone know why this is happening and if there is a way to make Mathematica render smooth at first?

{ asked by Sonryell }


This is done intentionally to update the plot quickly as you move the slider. Manipulate changes the setting for PerformanceGoal (via $PerformanceGoal) to "Speed" while you move the slider, then to "Quality" after you let go. This is seen in this simple demonstration:

Manipulate[{n, $PerformanceGoal}, {n, 0, 1}]

If you want the final quality while dragging at the expense of update speed you can give an explicit PerformanceGoal -> "Quality":

 PolarPlot[Sin[nS*t], {t, -5 π, 5 π}, 
  PerformanceGoal -> "Quality"], {nS, 1, 20, 1}]

Alternatively you can take manual control of this process with ControlActive, and specify the PlotPoints that are used while dragging and after release:

 PolarPlot[Sin[nS*t], {t, -5 π, 5 π}, 
  PlotPoints -> ControlActive[50, 150]], {nS, 1, 20, 1}]

You can turn off updating while dragging altogether using ContinuousAction:

Manipulate[PolarPlot[Sin[nS*t], {t, -5 π, 5 π}],
  {nS, 1, 20, 1}, ContinuousAction -> False]

As belisarius comments you range for t is excessive: {t, -π, π} will not run multiple circuits. This will allow the plot to update much more quickly. I leave the original value in the examples above so that the effect is easier to observe.

{ answered by Mr.Wizard }