0

各データポイントがデータポイントを指す矢印でラベル付けされているpyplotグラフがあり、データが注釈を付けているデータポイントから一定のオフセットになるようにフォーマットされています。これは、データ ポイントの 1 つで図の端に近づきすぎて、注釈が切り落とされるまでは正常に機能します。注釈をフォーマットして、データから離れて自動的に配置され、図にとどまるようにする方法があることを願っています。以下は、注釈をどのようにフォーマットしているかのスニペットです。

for label, x, y in zip(bagOlabels, time, height):
    ax.annotate(
                label,
                xy = (x,y), xytext = (50,-20),
                textcoords = 'offset points', ha = 'right', va = 'top',
                arrowprops = dict(arrowstyle = '->', 
                connectionstyle = 'arc3,rad=0')
                )

ラベルのxytext = (50,-20)オフセットを設定する場所です。私は掘り起こしてきましたが、探しているものはまだ見つかりません。これをどのように達成できるかについての洞察があれば、私はそれを聞きたいです.

ありがとう。

4

1 に答える 1

1

あなたが試すことができるいくつかの戦略があります:

  1. ポイントがプロットの右半分にある場合は、注釈を負のオフセットで配置します。

    for label, x, y in zip(bagOlabels, time, height):
        offset = (50, 20)
        if x > mid_x:
           offset = (-50, 20)  # (-50, -20) could be better
    
    ax.annotate(...)
    
  2. すべての注釈がプロットに収まるように、プロットを拡大します。

最初のケースでは、注釈が互いに重なっている可能性があります。

更新

このメソッドget_xlimは、プロットの範囲を x 軸で返します。

x = range(0, 100)
y = map(lambda x: x*x, x)

fig = pyplot.figure()
ax1 = fig.add_subplot(1, 1, 1)
ax1.plot(x, y, 'r.', x, y, 'r-')
xlim = ax1.get_xlim()
于 2012-08-10T21:04:41.927 に答える