2012-11-18 42 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-hard(即沒有保證解決這個問題的快速算法方法)。甚至Google和OpenStreetMaps都沒有完善解決方案!

潛在的解決方案可以包括爲較不重要的元素隱藏連接或標籤,渲染一系列包含標籤/連接子集的圖像,並以不同的縮放級別呈現圖像。關於visualizing the stock market structure的Sklearn教程對於標籤放置的一些簡單啓發式方法來說是一個很好的例子。

您可能還想要圍繞GIS堆棧交換,as similar questions have been asked there