6

次のプロットに表示されるボックスの座標を取得するにはどうすればよいですか?

ここに画像の説明を入力

fig, ax = subplots()
x = ax.annotate('text', xy=(0.5, 0), xytext=(0.0,0.7), 
                ha='center', va='bottom',
                bbox=dict(boxstyle='round', fc='gray', alpha=0.5),
                arrowprops=dict(arrowstyle='->', color='blue'))

このオブジェクトのプロパティを調べようとしましたが、この目的に適したものが見つかりませんでした。正しい軌道に乗っている可能性があるというプロパティがありますがget_bbox_patch()、別の座標系で結果が得られます (または別のプロパティに関連付けられています)。

y = x.get_bbox_patch()
y.get_width()
63.265625

どうもありがとう!

4

2 に答える 2

6
ax.figure.canvas.draw()
bbox = x.get_window_extent()

Bbox表示単位でテキストのオブジェクトを返します (drawこれは、テキストがレンダリングされ、実際に表示サイズを持つために必要です)。次に、変換を使用して、必要な座標系に変換できます。元

bbox_data = ax.transData.inverted().transform(bbox) 
于 2013-07-23T15:50:05.967 に答える
1

あなたの質問には、事前の質問もあります。

  • と書くときHow can I get the coordinates of the box displayed in the following plot?、どの座標系を意味しますか?

デフォルトannotateでは、 を使用して行われますxytext = None, defaults to xy, and if textcoords = None, defaults to xycoords

座標系を指定しなかったためです。注釈はデ​​フォルトのシステムにあります。データ座標を指定できますが、目的によってはこれで十分です。

x = ax.annotate('text', xy=(0.5, 0), xytext=(0.0,0.7), 
                ha='center', va='bottom', textcoords='data', xycoords="data",
                bbox=dict(boxstyle='round', fc='gray', alpha=0.5),
                arrowprops=dict(arrowstyle='->', color='blue'))

座標系を見つけるには、次のようにします。

In [39]: x.xycoords
Out[39]: 'data'

そして座標を取得するには:

In [40]: x.xytext
Out[40]: (0.0, 0.7)

In [41]: x.xy
Out[41]: (0.5, 0)

PS は直接関係ありませんが、出力はIPythonからのものです。まだ使用していない場合は、Python で開発して matplotlib を使用する方法を後押しできます。試してみる。

于 2013-07-23T05:24:25.360 に答える