以下のコードでは、テキストラベルの高さを取得するためにget_window_extent()
を使用しています。私は画面の表示とフォントサイズを1:1の関係にするために、figure dpi値を72 dpiに設定しました。私の期待は、get_window_extent()
で検索された値がテキストポイントのサイズ値と一致するということです。matplotlib get_window_extent()が不正なテキストの高さを取得する
これをテストするために、サイズを増やすテキストラベルのセットを描画するためのループを作成し、get_window_extent()
で取得した値が一部のフォントサイズに一致しますが、他のフォントサイズでは一致しません。ここで
は、以下のコードによって生成された出力です:
Font Size
Set Returned
9 9.0
10 10.0
11 10.0
12 13.0
13 13.0
14 14.0
15 15.0
16 15.0
17 18.0
18 18.0
どちらかの図のDPI設定が72 dpiで、実際にはない、またはその何かがget_window_extent()
方法と間違っていることが表示されます。
WXaggバックエンドを使用して、MacOS 10.12.5でMatplotlib 1.5.0を実行しています。なぜこれが起こっているかのようなアイディアは大歓迎です。
import matplotlib as mpl
mpl.use('wxagg')
import matplotlib.pyplot as plt
# points per inch
points_per_inch = 72
# set figure size in inches
myfsize = (8, 6)
# create figure and subplot axes matrix
myfig, ax = plt.subplots(1, 1, dpi=72, figsize=myfsize)
# adjust subplot spacing
plt.subplots_adjust(wspace=0.04, hspace=0.04, right=0.8,
bottom=0.1, top=0.9, left=0.125)
# draw canvase to get positions
plt.gcf().canvas.draw()
string = 'curve'
print
print 'Font Size'
print 'Set', '\t', 'Returned'
# loop over a range of font sizes and print retrieved font size
for i in range(10):
text_size = 9 + i
text_position = i/10.0
txt = ax.text(0.0, text_position, string, fontsize=text_size,
transform=ax.transAxes)
plt.gcf().canvas.draw()
txt_height_display = txt.get_window_extent().height
print text_size, '\t', txt_height_display
plt.show()
ありがとう、私は17と18のポイントサイズで2つの色の同じ位置に2つの同じ文字列をプロットし、高さが画面上で同じであることを確認しました(幅は異なります)。 – jkueng