2012-01-09 64 views
3

说,同时改变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} 
] 

我已经设置了以下功能f[a,b,c]我想情节是有可能有,当我修复横坐标观看纵坐标自动缩放范围?你会注意到上面的代码,当变化ab纵坐标确实自动缩放,如果我正在查看整个范围{c,0,1}。我希望它仍然能够从0到1处理c,但是如果我想查看此图的较小部分,比如说从0到0.05的c,仍然可以正确缩放垂直轴。感谢大家的帮助。

+0

如果有方法将PlotRange添加到Manipulate中,我会非常棒,但到目前为止我还没有发现任何说这是可能的... – CaptanFunkyFresh 2012-01-09 22:51:33

回答

8

上阿特斯Docendo的建议的变体:

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

通知的Evaluate迫使机器精度值实际送入Plot功能之前,试图画出一些东西。

在这种情况下,我更喜欢Full而不是Automatic,因为那样你就知道它永远不会以隐藏曲线部分的方式裁剪图。

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)] 
3

看看这样做你想要什么。我只是使用ListPlot而不是plot。

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

无论如何,这里是我

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)

它只是发生在我身上,使上面的更高效,是使用第一个表的命令,以生成数据本身,而不仅仅是查找绘图范围的最大/最小值。然后用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] 
    ) 
]