web-dev-qa-db-ja.com

Mathematicaで異なる曲線にラベルを付けるにはどうすればよいですか?

これらの各行に個別にラベルを付けるにはどうすればよいですか?

Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}]

enter image description here

20
500

an answer から ListPlotsで複数のデータセットに注釈を付ける方法 でこれを動的に行うことができるいくつかの素敵なコードがあります。

テクニカルノートで定義されているLabelPlotコマンドもあります プロットの曲線のラベル付け

もちろん、作成する画像が多すぎない場合は、 Epilog を使用して手動でラベルを追加することは難しくありません。たとえば、

fns[x_] := {5 + 2 x, 6 + x}; 
len := Length[fns[x]];

Plot[Evaluate[fns[x]], {x, 0, 10}, 
 Epilog -> Table[Inset[
    Framed[DisplayForm[fns[x][[i]]], RoundingRadius -> 5], 
    {5, fns[5][[i]]}, Background -> White], {i, len}]]

outputa

実際、Locatorsでも同様のことができ、ラベルを好きな場所に移動できます。

DynamicModule[{pos = Table[{1, fns[1][[i]]}, {i, len}]},
 LocatorPane[Dynamic[pos], Plot[Evaluate[fns[x]], {x, 0, 10}],
  Appearance -> Table[Framed[Text@TraditionalForm[fns[x][[i]]], 
                  RoundingRadius -> 5, Background -> White], {i, len}]]]

上記ではEpilogを上記のように保持し、位置を制御する非表示のロケーターを使用することもできますが、上記ではロケーターをラベルの形式にしました。ロケーターは、適切な曲線に(Dynamicの2番目の引数を使用して)制限することもできますが、それは必ずしも必要ではありません。

ラベルを手動で移動した関数を含む上記のコードの例として:

fns[x_] := {Log[x], Exp[x], Sin[x], Cos[x]};

four functions

34
Simon

Mathematica 9は今や凡例を含めるための簡単な方法を提供します。

Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}, PlotLegends -> "Expressions"]
10
Shane C

PlotLegendsパッケージをロードして、プロットに凡例を挿入できます

<<PlotLegends`;
Plot[{5+2 x,6+x},{x,0,10},
    PlotLegend->{"5+2x","6+x"},LegendShadow->None,
    LegendPosition->{0.3,-0.5},LegendSpacing->-0,LegendSize->0.5]

enter image description here


ただし、このパッケージが嫌いであることにも注意してください。これは、主に直感的に理解できず、オプションが多すぎて、Mathematicaのほとんどの機能のように箱から出してすぐにクリーンなエクスペリエンスを提供できないためです。必要なものを取得するためのオプションをいじくりまわすことになります。ただし、凡例が必要なプロットやチャートでは、これは便利です。 this answer および this question へのコメントも参照してください。

6
abcd