2012-11-18 10 views
13

matplotlibで作成したネットワークプロットにパワーフローの結果を挿入しようとしています。いくつかのバスはとても近く、電力の流れの結果と共に名前にラベルを付けることは、テキストの重なりによって一部の部分が判読不能になるため、大きな頭痛になることが判明しています。matplotlibに重複しないテキストを挿入するには?

テキストの境界ボックスを使用して、テキストがプロット線やその他のテキストと重なっているかどうかを判断する方法はありますか?

+0

matplotlib-usersメーリングリストでも同様の問題について議論がありました。 [ここ](http://matplotlib.1069221.n5.nabble.com/Optimal-positioning-of-text-td10090.html)を参照してください。 – tiago

+0

plt.tight_layout()を試しましたか? – Yugi

+0

get_clear()関数でこれと似たようなことを行いました。https://sourceforge.net/p/spacepy/code/ci/master/tree/spacepy/plot/utils.py#l954 –

答えて

3

この問題は、automatic label placement problemというNPハードの例です(これを解決するための高速アルゴリズムアプローチはありません)。 GoogleとOpenStreetMapsでさえ、これに対する完璧な解決策はありません!

重要性の低い要素の接続やラベルを隠す、ラベル/接続のサブセットを含む一連の画像をレンダリングする、さまざまなズームレベルで画像をレンダリングすることなどが考えられます。 visualizing the stock market structureのSklearnチュートリアルには、ラベルを配置するためのヒューリスティックなアプローチがいくつかあります。

また、GISスタック交換機as similar questions have been asked thereを突き止めたいかもしれません。

関連する問題