1

Mathematica v8 で PlotLegend を使用して、凡例付きの関数のリストをプロットしようとしています。私がやろうとしていることを示す簡単なテストとして。

<<PlotLegends`
test = Table[f[x], {f, {Sin, Cos, Tan, Log, Exp}}]
Plot[test, {x, 0, 1}, PlotRange -> Full, Axes -> {True, False}, 
PlotStyle -> Thick, AxesOrigin -> {0, 0}, 
PlotLegend -> {"Sin", "Cos", "Tan", "Log", "Exp"}, 
LegendPosition -> {0, -0.5}, LegendShadow -> None]

出力として与える

{Sin[x], Cos[x], Tan[x], Log[x], E^x}

誤った凡例

ただし、表を明示的に Plot コマンドに入れると、正しい凡例が得られます。

Plot[{Sin[x], Cos[x], Tan[x], Log[x], Exp[x]}, {x, 0, 1}, 
PlotRange -> Full, Axes -> {True, False}, PlotStyle -> Thick, 
AxesOrigin -> {0, 0}, 
PlotLegend -> {"Sin", "Cos", "Tan", "Log", "Exp"}, 
LegendPosition -> {0, -0.5}, LegendShadow -> None] 

正しい凡例

私の実際のアプリケーションでは、Do ループ内に関数のリストをまとめているので、後者の Plot コマンドは理想的ではありません。

どんな提案でも大歓迎です。

乾杯、マイク

4

1 に答える 1

6

に置き換えPlot[test, ...]ますPlot[Evaluate@test, ...]

問題は、Plot が評価されていない最初の引数を取り、点を計算するときにのみ評価することです。testしたがって、ラベルを決定するとき、リストではなく単一の引数のみを参照するため、1 つのラベルのみを出力します。は,未評価の引数を取るように定義されていても,Evaluate@testMathematicatestに渡す前に評価するように指示します.このようにして、Plot は保存したリストを見て、いくつかのラベルを生成することを認識します。PlotPlottest

于 2012-08-13T19:06:41.900 に答える