解決策は、テキストオブジェクトからバウンディングボックスを探索し、自分でボックスを生成することです。非常に便利ではありません。おそらく私の例を改善することができます。変換は常に私をちょっと混乱させます。
import matplotlib.patches as patches
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1,1)
t1 = axs.text(0.4,0.6, 'Hello world line 1', ha='center', color='red', weight='bold', transform=axs.transAxes)
t2 = axs.text(0.5,0.5, 'Hello world line 2', ha='center', color='green', weight='bold', transform=axs.transAxes)
t3 = axs.text(0.6,0.4, 'Hello world line 3', ha='center', color='blue', weight='bold', transform=axs.transAxes)
fig.canvas.draw()
textobjs = [t1,t2,t3]
xmin = min([t.get_window_extent().xmin for t in textobjs])
xmax = max([t.get_window_extent().xmax for t in textobjs])
ymin = min([t.get_window_extent().ymin for t in textobjs])
ymax = max([t.get_window_extent().ymax for t in textobjs])
xmin, ymin = fig.transFigure.inverted().transform((xmin, ymin))
xmax, ymax = fig.transFigure.inverted().transform((xmax, ymax))
rect = patches.Rectangle((xmin,ymin),xmax-xmin,ymax-ymin, facecolor='grey', alpha=0.2, transform=fig.transFigure)
axs.add_patch(rect)
小さなバッファなどを追加したいと思うかもしれませんが、考え方は変わりません。
最後のレシピの例は何ですか? –
@Davidこの例では、1行のテキストしかありません。私は、私が書いたテキストの周りに同じボックスを持つことが可能である方法を探しています。レシピに続いて、例のように1行にテキストを書くことができます(textstr = '$ \ mu =%2f $ \ n $ \ mathrm {median} =%.2f $ \ n $ \ sigma =%。2f $' )しかし、どのようにテキストの色を変更することは可能ですか? –