12

プロキシ アーティスト (http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist) を使用して散布図の凡例を作成し、円形のマーカーを作成しようとしています。

これは私のコードです:

legend([Circle((0,0), fc='g')], ["Green Circle"])

しかし、プロットすると、凡例には円がなく、代わりに長方形が表示されます...

凡例に円マーカーを表示するにはどうすればよいですか?

4

2 に答える 2

20

探しているのが凡例の円形マーカーだけである場合 (プロキシ アーティストを厳密に使用するのではなく)、次のようなものを試すことをお勧めします。

line1 = Line2D(range(1), range(1), color="white", marker='o', markerfacecolor="red")
line2 = Line2D(range(1), range(1), color="white", marker='o',markerfacecolor="green")
line3 = Line2D(range(1), range(1), color="white", marker='o',markersize=5, markerfacecolor="slategray")
line4 = Line2D(range(1), range(1), color="white", marker='o',markersize=10,markerfacecolor="slategray")
plt.legend((line1,line2,line3,line4),('Thing 1','Thing 2', 'Thing 3', 'Thing 4'),numpoints=1, loc=1)

これは、さまざまな色とサイズの円を示しています。描画される 2D 線は白です (したがってcolor="white")。たとえば、円を塗りつぶしたくない場合は、 と を設定markeredgecolor="green"markerfacecolor="white"ます。

さらに微調整

  • 白い背景がない場合、または線が背景のグリッドと交差している場合color="white"でも、線は表示されます。linewidth=0線を完全に隠します。
  • handletextpadキーワード引数 forを使用してplt.legend、円とラベルの間のスペースを減らします。値は負の場合もありますhandletextpad=-0.3
  • パレットを使用している場合はseaborn、パレットにインデックスを付けることで、個々のマーカー フェースの色を設定できます。例えばmarkerfacecolor=sns.color_palette("cubehelix", 3)[0]
于 2012-07-10T23:39:46.913 に答える
4

@punkkat凡例に追加するパッチ(Circle)を追加する場合、追加されるのはパッチ自体ではありませんが、新しいRectangleパッチは、まったく同じプロパティ(色、ハッチング、アルファなど)で作成されます。与えられたパッチ。したがって、入ってくる形状に関係なく、結果は凡例の正方形のパッチになります。

@cosmosisで指定されている簡単な解決策は、任意のマーカーをサポートできる凡例にラインインスタンスを渡すことです。マーカーの形状に制限がないため、渡すことができる形状に制限はありません。伝説をつけなさい。

于 2012-07-12T15:37:41.943 に答える