2012-02-13 13 views
8

で複数の異なるマーカーとの伝説は、状況の簡素化プロットである:matplotlibの、ここに1つのラベル

plot example

代わりの各データポイントマーカーを持つ別々のラベルを持って、私が持っていることができるようにしたいです1組の異なるマーカーのための1つのラベル。

<triangle> <square> <hexagon> <diamond> <circle> Shotcrete strength data points 
<green line> 10 minute strength 
<blue line> 60 minute strength 
<yellow line> 1 day strength 
<orange line> 7 day strength 
<red line> 28 day strength 

私はので、最終的なプロットで、私は18(3セット* 6点/セット)を示す3つのデータ点のセットとなりますこれをしたいマーカー:私のような伝説を持ってできるようにしたいと思います/ラベルの組み合わせは面倒です。

私はPython 2.7でMatplotlibを使用しています。

答えて

3

注:この回答は正解の目安として保管されていますが、上記の問題は解決しません。 matplotlibでサポートされていないパッチコレクションの問題については、下記の編集をご覧ください。


あなたは完全なカスタマイズがいわゆるプロキシアーティストを使用することですしたい場合は、このことについてに行くための一つの方法:

from pylab import * 

p1 = Rectangle((0, 0), 1, 1, fc="r") 
p2 = Circle((0, 0), fc="b") 
p3 = plot([10,20],'g--') 
legend([p1,p2,p3], ["Red Rectangle","Blue Circle","Green-dash"]) 

show() 

ここであなたが伝説のようにしたい正確ものを指定することができますが見えるようにしたり、非標準のプロット図形(パッチ)を使用することさえできます。

編集:matplotlib only supports these Artists in a legendこの方法ではいくつかの問題があります。 matplotlib v1.0以前では、サポートされているアーティストは次のとおりです。

Line2D 
Patch 
LineCollection 
RegularPolyCollection 
CircleCollection 

複数の散布ポイントのご依頼は、上記のサポートされていないPatch Collection、で行われます。理論的には、これは可能ですが、私はどのように見えません。

+1

私は現在、擬似行を使って凡例を作成しています。私はこのようなもの(http://matplotlib.sourceforge.net/users/legend_guide.html#legend-handler)を使うことができると思います: 'code' z = np.random.randn(10) p1a、= plt.plot(z、 "ro"、ms = 10、mfc = "r"、mew = 2、mec = "r")#赤い塗りつぶしの円 p1b、= plt.plot(z [ (p1a、(p1a、p1b)]、["Attr A"、 "Attr A + B"、 "w +"、ms = 10、mec = "w"、mew = 2) "]) ' code' 複数のマーカーを1つの行に結合します。 – CrazyArm

+0

@CrazyArm私が理解する限り、 ''というカスタムシェイプを定義しなければならないため、私が行ったように解決策を与えました。散布図ソース(または散布図自体)からシンボルシェイプを抽出し、それをカスタムシェイプと共に「凡例」への入力として使用することができます。 – Hooked

+0

ありがとうございます。私は凡例(あなたが言及したような矩形または円)で個々のカスタムマーカーを作成する方法を理解していると思うが、私はそれらの2つを組み合わせる方法を知りません。これ(http://matplotlib.sourceforge.net/examples/api/scatter_piecharts.html)は、複数のシンボルを重ねて表示しますが、凡例にどのように表示するかはわかりません。 – CrazyArm

関連する問題