2011-08-28 7 views

答えて

34

あなたはHow to annotate multiple datasets in ListPlotsan answerで動的にこれを行うことができますいくつかの素晴らしいのコードがあります。あなたが作るためにあまりにも多くの画像を持っていない場合

もテクニカルノートもちろん​​Labeling Curves in Plots

で定義されて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[[email protected][fns[x][[i]]], 
        RoundingRadius -> 5, Background -> White], {i, len}]]] 

を、上記のようなEpilogを維持することも可能であると位置を制御見えないロケータを持っているが。 ロケータは適切なカーブに(第2引数のDynamicを使用して)拘束することもできますが、実際には必要ありません。手で移動したラベルを持つ関数と、上記のコードの例として

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

four functions

+4

1ナイスアイデア! –

+9

+1。ロケータを線に拘束する必要はないかもしれませんが、そうするのはかなり涼しいです。 'Dynamic'式を' Dynamic {pos、(pos = MapIndexed [{##} /。{{x_、y_}、{i_}}:{x、fns [x] [[i]]}に変更してみてください。 &、#])&] ' – WReach

+2

@WReach:あなたは私がこの練習を残した興味のある読者の一種です!あなたのコードはうまく動作します。 – Simon

6

あなたは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 answerthis questionのコメントも参照してください。

+0

PlotLegendsパッケージは最適ではありません。 [この回答へのコメント](http://stackoverflow.com/questions/6988983/how-to-annotate-multiple-datasets-in-listplots/6989679#6989679)と[このような質問](http:// stackoverflow.com/q/3463437/421225)。 – Simon

+1

@シモン:私は知っている...私は5分の窓の前に削除した私の答えに2番目の部分を持っていたので、私は判断をパスしたくなかった。 _ " しかし、このパッケージの嫌いな点にも注目しましょう。これは、非常に直観的ではなく、あまりにも多くのオプションを含んでおり、大部分のMathematicaの機能のようにすぐにクリーンな経験を提供しないからです。しかし、凡例が必要なプロットやグラフでは、これは便利なことです。 "_ – abcd

+0

私の解説を読んだ後、私はこの回答を削除します。応答。ただし、上記の2つのリンクを質問にコメントとして追加してください(バグであることにも注意してください)。多分彼が望むのは伝説であり、人々は要求を複雑にする方法を持っています。 – abcd

11

Mathematica 9では、凡例を簡単に含めることができます。

Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}, PlotLegends -> "Expressions"] 
関連する問題