如何在mathematica中显示循环内的图

Qia*_* Li 13 wolfram-mathematica

我想知道你是否有很好的方法在mma循环中显示情节.通常,Plot函数的输出未显示,例如在以下代码中:

For[i = 1, i <= 10, i++, Plot[Sin[i*x], {x, -Pi, Pi}]]

谢谢你的帮助.

编辑

关于我之前的问题,我已经有了For循环,例如,像这样For[i = 1, i <= 10, i++, Plot[Sin[i*x], {x, -Pi, Pi}]].鉴于这一事实,我希望在For循环中有"按任意键继续..."之类的内容,然后每次按任意随机键时刷新绘图.任何人都可以提供完整的工作代码吗?

Sjo*_*ies 17

只需使用Print:

For[i = 1, i <= 10, i++, Plot[Sin[i*x], {x, -Pi, Pi}] // Print]
Run Code Online (Sandbox Code Playgroud)

或者Monitor:

Monitor[For[i = 1, i <= 10, i++, p = Plot[Sin[i*x], {x, -Pi, Pi}]; 
  Pause[0.5]], p]
Run Code Online (Sandbox Code Playgroud)

(此处使用Pause可以给一些时间来查看绘图;此处的循环非常快.如有必要,可以删除)

编辑
请求通过鼠标点击图形控制的版本(按键需要图形具有焦点,因此您无论如何都需要点击)

Monitor[For[i = 1, i <= 10, , p = Plot[Sin[i*x], {x, -Pi, Pi}]], 
EventHandler[p, {"MouseDown" :> i++}]]
Run Code Online (Sandbox Code Playgroud)

这是一个非常愚蠢的方法来做到这一点.循环连续重绘绘图.所以,一个稍微(但仍然很难看)的版本可能是:

s = True;
Monitor[
 For[i = 1, i <= 10, ,
  If[s,
   (* Put main loop body here*) 
   p = Plot[Sin[i*x], {x, -Pi, Pi}] 
   (* end of main body *) ;
   s = False (* prevents continuous re-evaluating main body *)
   ]
  ]
 , EventHandler[p, {"MouseDown" :> (i++; s = True)}]
 ]
Run Code Online (Sandbox Code Playgroud)


Mic*_*lat 13

只需返回一个图表列表,而不是使用For循环:

Table[Plot[Sin[i*x], {x, -Pi, Pi}], {i, 1, 10}]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果你想将它们全部连接成一个图,那么这Show[listOfPlots]是一种方法:

Show[Table[Plot[Sin[i*x], {x, -Pi, Pi}], {i, 1, 10}]]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

UPDATE

这是使用Dynamic和的一种简单方法EventHandler:

DynamicModule[{i = 1},
 EventHandler[Dynamic[Plot[Sin[i*x], {x, -Pi, Pi}]],
  {"KeyDown" :> i++}
  ]
Run Code Online (Sandbox Code Playgroud)

这是一个稍微更精致的界面Animate:

Animate[Plot[Sin[i*x], {x, -Pi, Pi}], {i, 1, 10, 1}, AnimationRunning -> False]
Run Code Online (Sandbox Code Playgroud)


Sim*_*mon 5

如果你真的想让用户在Plots之间按一个键,最简单的方法可能就是

For[i = 1, i <= 10, i++, 
    If[!ChoiceDialog[Plot[Sin[i*x], {x, -Pi, Pi}], 
         WindowTitle -> "Plot #" <> ToString[i] 
                                 <> ":  Press OK or Enter to continue"],
    Abort[]]]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我一直按下确定按钮,没有任何反应.BTW取消按钮也不起作用.它是您的程序中的错误,还是仅仅是Mozilla兼容性问题? (3认同)