看看這樣做你想要什麼。我只是使用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]
)
]
如果有方法將PlotRange添加到Manipulate中,我會非常棒,但到目前爲止我還沒有發現任何說這是可能的... – CaptanFunkyFresh 2012-01-09 22:51:33