「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Matplotlib ビジュアライゼーションで注釈が重複しないようにするにはどうすればよいですか?

Matplotlib ビジュアライゼーションで注釈が重複しないようにするにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:769

How can I prevent overlapping annotations in Matplotlib visualizations?

Matplotlib の注釈の重複

Matplotlib ビジュアライゼーションでは、注釈の重複の問題がよく発生し、グラフが乱雑で解釈が難しくなります。この記事では、この課題に対処するための包括的なソリューションを提供します。

The Herausforderung

複数の注釈が同じ画面スペースを共有すると、注釈の重複が発生し、視覚的に乱雑になります。提供されたコードでは、データ ポイントの注釈テキストが、特にグラフの密集した領域で重複する傾向があります。

The Lösung

注釈の重複を避けるために、Phlya によって作成された、adjustText ライブラリが使用されます。シンプルで効果的なソリューションを提供します。このライブラリは、読みやすさを維持しながら、重なりを最小限に抑えるために注釈の位置を自動的に調整します。

adjustText の使用

次のコード スニペットは、提供された例で、adjustText を使用して注釈の配置を最適化する方法を示しています。

import matplotlib.pyplot as plt
from adjustText import adjust_text

# ... (code to generate the data and plot remain the same as before) ...

plt.xlabel("Proportional Euclidean Distance")
plt.ylabel("Percentage Timewindows Attended")
plt.title("Test plot")

texts = [x for (x,y,z) in together]
eucs = [y for (x,y,z) in together]
covers = [z for (x,y,z) in together]

p1 = plt.plot(eucs,covers,color="black", alpha=0.5)
texts = []
for x, y, s in zip(eucs, covers, text):
    texts.append(plt.text(x, y, s))

adjust_text(texts, only_move={'points':'y', 'texts':'y'}, arrowprops=dict(arrowstyle="->", color='r', lw=0.5))
plt.show()

テキスト配置のカスタマイズ

adjustText は、注釈の配置を微調整するためのさまざまなカスタマイズ オプションを提供します。たとえば、移動可能な要素 (only_move パラメーター)、注釈の配置、テキスト オブジェクト間の反発の強さを制御できます。

これらのパラメーターを試してみることで、最適なテキスト配置を実現できます。注釈の重複を心配することなく、Matplotlib グラフの明瞭さと視覚的な魅力を最大限に高めます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3