Mathematica Manipulate Plot:Scaling Axes

时间:2012-01-09 22:39:59

标签: wolfram-mathematica plot axes

假设我设置了以下函数f[a,b,c],我希望在改变ab

时进行绘制
f[a_,b_,c_]:=a b c Exp[a b]

Manipulate[
Plot
[
f[a,b,c],
{c,0,1},
PlotRange->{{0,0.05},Automatic}
],
{a,0,1},
{b,0,1}
]

当我修正横坐标观察范围时,是否可以自动缩放纵坐标?您会注意到上面的代码,当变化ab时,纵坐标会自动缩放,就好像我正在查看{c,0,1}的整个范围一样。我希望它仍然可以从0到1处理c,但如果我想查看该图的较小部分,从0到0.05说c,仍然可以正确缩放垂直轴。谢谢大家的帮助。

3 个答案:

答案 0 :(得分:8)

Artes Docendo建议的变体:

Manipulate[
 Plot[f[a, b, c], {c, 0, Evaluate@d}, 
  PlotRange -> {{0, Evaluate@d}, Full}], {a, 0., 1.}, {b, 0., 1.}, {d, 
  0.05, 1.}]

注意Evaluate强制机器精度值在实际尝试绘制内容之前被送到Plot函数。

在这种情况下,对于y轴Full,我更喜欢Automatic而不是PlotRange,因为之后您知道它永远不会以隐藏曲线部分的方式裁剪图

答案 1 :(得分:4)

以下是许多可能的解决方案之一:

f[a_, b_, c_] := a b c Exp[a b]
Manipulate[ Plot[f[a, b, c], {c, 0, d}, PlotRange -> Automatic], 
            {a, 0, 1}, {b, 0, 1}, {d, 0.1, 1}, Initialization :> (d := 0.1)]

然而,你的例子不是很有启发性,看看它如何更好地尝试类似的东西   这个:

g[a_, b_, c_] := 3 (a - 0.5) Cos[4 Pi (a - c)] Sin[8 Pi (c - 0.5)] Cos[6 Pi (b - c)]

Manipulate[
           Plot[g[a, b, c], {c, 0, d}, PlotRange -> Automatic],
           {a, 0, 1}, {b, 0, 1}, {d, 0.1, 1}, 
           Initialization :> (a := 0.4; b := 0.4; d := 0.5)]

答案 2 :(得分:3)

看看这是否符合您的要求。我只是使用ListPlot而不是plot。

但是我不确定你在做什么,因为你正在为{0}设置f c,但是然后将x范围设置为0到0.05?那么为什么不使用f绘制{c,0,0.05}?可能是我遗失了一些东西。

无论如何,这就是我所拥有的

 Manipulate[

 xmax = 0.05;
 y = Table[f[a, b, c], {c, 0, xmax, 0.01}];
 max = Max[y];
 min = Min[y];

 Plot[f[a, b, c], {c, 0, 1},
  PlotRange -> {{0, xmax}, {min, max}}, ImagePadding -> 30],

 {a, 0, 1},
 {b, 0, 1},
 Initialization :>
  (
   f[a_, b_, c_] := a b c Exp[a b]
   )

 ]

修改(1)

我刚刚想到,为了使上述更有效,就是使用第一个Table命令来生成数据本身,而不仅仅是找到绘图范围的最大/最小值。然后使用ListPlot代替Plot。这应该更快,因此函数f的采样只发生一次而不是2次?

所以这是第二个版本

Manipulate[xmax = 0.05;

 data = Table[{c, f[a, b, c]}, {c, 0, xmax, 0.01}];
 max = Max[data[[All, 2]]];
 min = Min[data[[All, 2]]];

 ListPlot[
  data,
  PlotRange -> {Automatic, {min, max}},
  Joined -> True,
  ImagePadding -> 30
  ],

 {a, 0, 1},
 {b, 0, 1},
 Initialization :>
  (
   f[a_, b_, c_] := a b c Exp[a b]
   )
 ]