カスタム色を使用した散布図のMatplotlib凡例
-
07-07-2019 - |
質問
私はこれに少し慣れており、カスタムのバブルサイズと色で散布図を作成しようとしています。グラフは正常に表示されますが、色が何を指しているのかを説明する凡例を取得するにはどうすればよいですか。これは私が持っている限りです:
inc = []
out = []
bal = []
col = []
fig=Figure()
ax=fig.add_subplot(111)
inc = (30000,20000,70000)
out = (80000,30000,40000)
bal = (12000,10000,6000)
col = (1,2,3)
leg = ('proj1','proj2','proj3')
ax.scatter(inc, out, s=bal, c=col)
ax.axis([0, 100000, 0, 100000])
ax.set_xlabel('income', fontsize=20)
ax.set_ylabel('Expenditure', fontsize=20)
ax.set_title('Project FInancial Positions %s' % dt)
ax.grid(True)
canvas=FigureCanvas(fig)
response=HttpResponse(content_type='image/png')
canvas.print_png(response)
このスレッドは役に立ちましたが、私の問題を解決することができませんでした: Matplotlib:Legend正しく表示されない
解決
例が役立つかもしれません。
一般に、凡例の項目は、ある種のプロットされたオブジェクトに関連しています。 scatter
関数/メソッドは、すべての円を単一のオブジェクトとして扱います。次を参照してください:
print type(ax.scatter(...))
したがって、解決策は複数のオブジェクトを作成することです。したがって、 scatter
を複数回呼び出します。
残念なことに、matplotlibの新しいバージョンでは、凡例で長方形を使用していないようです。したがって、散布図オブジェクトのサイズを大きくしたため、凡例には非常に大きな円が含まれます。
凡例は、凡例マーカーのサイズを制御する markerscale
キーワード引数として機能しますが、破損しているようです。
更新:
凡例ガイドは、プロキシアーティスト。 Color API は、有効な fc
値について説明しています。
p1 = Rectangle((0, 0), 1, 1, fc="b")
p2 = Rectangle((0, 0), 1, 1, fc="g")
p3 = Rectangle((0, 0), 1, 1, fc="r")
legend((p1, p2, p3), ('proj1','proj2','proj3'))
プロットで以前に使用された色を取得するには、上記の例を使用します:
pl1, = plot(x1, y1, '.', alpha=0.1, label='plot1')
pl2, = plot(x2, y2, '.', alpha=0.1, label='plot2')
p1 = Rectangle((0, 0), 1, 1, fc=pl1.get_color())
p2 = Rectangle((0, 0), 1, 1, fc=pl2.get_color())
legend((p1, p2), (pl1.get_label(), pl2.get_label()), loc='best')
この例では、次のようなプロットを作成します。
他のヒント
これを見てください:
http://matplotlib.sourceforge.net/api/pyplot_api .html#matplotlib.pyplot.legend
役立つことを願っています。さらに質問するだけではない場合:)