2

線と点をmatplotlibの凡例テキストに入れる可能性はありますか? 以下のようなことを考えていました

x=np.linspace(0,10,100)
ys=np.sin(x)
yc=np.cos(x)
pl.plot(x,ys,'--',label='sin')
pl.plot(x,yc,':',label='derivative of --')
pl.legend()
pl.show()

代わりに--、凡例ラベルの前と同じように、対応する色の同じシンボルが必要ですsin

4

2 に答える 2

1

matplotlib のソース コードを読んだ後、matplotlib の内部 V- および HPackers を使用するため、私にとって完璧に機能し、位置の微調整などを必要としないソリューションを最終的に見つけました。

import numpy as np
import pylab as pl

x=np.linspace(0,10,100)
ys=np.sin(x)
yc=np.cos(x)

pl.plot(x,ys,'--',label='sin')
pl.plot(x,yc,':',label='derivative of')
leg=pl.legend()

# let the hacking begin
legrows = leg.get_children()[0].get_children()[1]\
             .get_children()[0].get_children()
symbol  = legrows[0].get_children()[0]
childs  = legrows[1].get_children().append(symbol)

pl.show()

結果は次のようになります。

ここに画像の説明を入力

于 2012-11-15T10:35:35.443 に答える
0

これは少しハックですが、目的を達成し、すべての部分 (つまり、凡例とテキスト) を適切な順序でプロットに配置します。

import pylab

pl.plot(x,ys,'--',label='sin', color='green')
pl.plot(x,yc,':',label='derivative of --',color='blue')
line1= pylab.Line2D(range(10), range(10), marker='None', linestyle='--',linewidth=2.0, color="green")
line2= pylab.Line2D(range(10), range(10), marker='None', linestyle=':',linewidth=2.0, color="blue")
leg = pl.legend((line1,line2),('sin','derivative of      '),numpoints=1, loc=1)
pylab.text(9.4, 0.73, '- -', color='green')
leg.set_zorder(2)
pl.show()

線のデフォルトの色に依存する代わりに、凡例で明確に参照できるように設定します。凡例の 2 行目の「導関数」のテキストには余分なスペースが残っているので、その上にテキスト (対応するシンボル/sin線の色) を配置できます。次に、テキストの記号/色を指定し、凡例のテキストと整列するように配置します。最後に、 を介して順序を指定しzorder、テキストを一番上に設定します。

于 2012-11-14T19:53:02.390 に答える