が質問に答えるために:
伝説の位置が場合にのみ、実行時に決定されます図形が描画されます。さらに、bbox_to_anchorは設定されていないので、完全軸((0,0,1,1)
)になります。
何ができることは、最初のウィンドウの大きさをキャンバスに描き、その後、取得された
ax.figure.canvas.draw()
bb = leg.get_window_extent().inverse_transformed(ax.transAxes)
しかし、これはあなたに(それだけに近い)正しい位置を与えることはありません。
今、可能な解決策は、凡例を置き換えるためではないかもしれないが、その代わりにのみ、それはコンテンツのアップデート:
import matplotlib.pyplot as plt
plt.plot(range(10))
ax = plt.gca()
leg = plt.legend(['a'], loc='lower left')
leg.texts[0].set_text("b")
plt.show()
そうでない場合は、更新がオプションでない場合、あなたはからbbox_to_anchorとLOCパラメータが必要になります古い伝説:
import matplotlib.pyplot as plt
plt.plot(range(10))
ax = plt.gca()
leg = plt.legend(['a'], loc='lower left', bbox_to_anchor=(0.5,0.5))
bb = leg.get_bbox_to_anchor().inverse_transformed(ax.transAxes)
plt.legend(['b'], bbox_to_anchor=bb, loc=leg._loc_real)
plt.show()
モードが「展開」に設定されている場合でも、これは失敗する可能性があります。また、新しい凡例の作成に同じfancyboxパラメータを使用する場合にのみ正確です。
内容を更新するだけでいいですね。しかし、フォントサイズ、numpoint、散布ポイント、ラベルスペース、ハンドレックスパッド、境界線パッド、ボーダーパッド、ハンドル長、およびファンシーボックスのすべてのプロパティを更新することはできません。私は、これらのうちのいくつかは作成時に伝説のコマンドでしかアクセスできないと思います。 – mrclary
凡例がどのように/どこに固定されているかを判断する方法はありますか?たとえば、凡例の左下隅が軸の左下隅に固定されています。もしそうなら、私はちょうど 'loc = 'lower left''を設定することができました... – mrclary
私は答えを更新しました。多分、これはあなたが必要とするものに近いです。 – ImportanceOfBeingErnest