複数のサブプロット (軸) を持つ matplotlib にプロットがあり、軸内の点に注釈を付けたいと考えています。ただし、後続の軸は前の軸の注釈をオーバーレイします (たとえば、subplot(4,4,1) の注釈は subplot(4,4,2) の下に入ります)。注釈 zorder を素晴らしく高く設定しましたが、役に立ちません:/
注釈には、 Joe Kington のすばらしいDataCursorの修正版を使用しました。
どんな助けでも大歓迎です
次に例を示します。
複数のサブプロット (軸) を持つ matplotlib にプロットがあり、軸内の点に注釈を付けたいと考えています。ただし、後続の軸は前の軸の注釈をオーバーレイします (たとえば、subplot(4,4,1) の注釈は subplot(4,4,2) の下に入ります)。注釈 zorder を素晴らしく高く設定しましたが、役に立ちません:/
注釈には、 Joe Kington のすばらしいDataCursorの修正版を使用しました。
どんな助けでも大歓迎です
次に例を示します。
これを行う 1 つの方法は、によって作成されたテキストをannotate
軸の外にポップし、Figure に追加することです。このようにして、すべてのサブプロットの上に表示されます。
あなたが抱えている問題の簡単な例として:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=5, ncols=5)
plt.setp(axes.flat, xticks=[], yticks=[], zorder=0)
ax = axes[0,0]
ax.annotate('Testing this out and seeing what happens', xy=(0.5, 0.5),
xytext=(1.1, .5), textcoords='axes fraction', zorder=100)
plt.show()
軸からテキスト オブジェクトを取り出し、代わりに Figure に追加すると、一番上になります。
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=5, ncols=5)
plt.setp(axes.flat, xticks=[], yticks=[], zorder=0)
ax = axes[0,0]
ax.annotate('Testing this out and seeing what happens', xy=(0.5, 0.5),
xytext=(1.1, .5), textcoords='axes fraction', zorder=100)
fig.texts.append(ax.texts.pop())
plt.show()
スニペットについて言及しましたが、そこでメソッドDataCursor
を変更したいと思います。annotate
def annotate(self, ax):
"""Draws and hides the annotation box for the given axis "ax"."""
annotation = ax.annotate(self.template, xy=(0, 0), ha='right',
xytext=self.offsets, textcoords='offset points', va='bottom',
bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5),
arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=0')
)
# Put the annotation in the figure instead of the axes so that it will be on
# top of other subplots.
ax.figure.texts.append(ax.texts.pop())
annotation.set_visible(False)
return annotation
私は最後のビットをテストしていませんが、うまくいくはずです...