Matplotlib clabels'in konumunu bir kontur çiziminde kontrol etmek istiyorum, ancak clabel'deki manual = True bayrağını kullanmadan. Örneğin, bir x koordinatı belirtmek ve bu çizgiden geçen noktalarda etiketler oluşturmak istiyorum. Gördüğünüz gibi, tek tek etiketlerin yerini get_position() kullanarak alabilirsiniz, ancak ben buna bağlıyım. Herhangi bir yardım büyük takdir edilecektir. Teşekkürler!Matplotlib Contour Clabel Konum
cevap
Hayır, bunu yapmak için matplotlib içine yerleştirmenin bir yolu yoktur. Varsayılan konumlarla yaşamak ya da manuel ile tamamen etkileşimli ve fareyi kullanarak gitmelisiniz.
Bunu, algoritmalarını geliştirebilmeleri için akış yönünden bir hata raporu olarak dosyalamak isteyebilirsiniz.
Bu konu üzerinde çalışmak için birden çok seçenek vardır. Birincisi, programatik olarak metni kontur şekline yerleştirmektir. Metnin altındaki satırları bu şekilde güvenli bir şekilde çıkaramayacaksınız. Bir kontur c
varsayarsak, c.collections
'da kontur çizgilerini bulabilirsiniz. Her kontur çizgisi için get_paths
'u çağırıp metninizi bu yola yerleştirin.
Diğer seçenek, manuel yerleştirme kodunu değiştirmek (matplotlib.contour.BlockingContourLabeler
'da) veya etiket konumlarını (matplotlib.contour.locate_label
'da) bularak kodu değiştirmektir, ancak her iki işlev de oldukça yoğun olacaktır. Eğer locate_label
için bir çalışma yerine elde edebilirsiniz Eğer siz
%psource c.clabel
ile interaktif oturumdan fonksiyon kaynağını görüntülemek kolayca yapabilirsiniz
ipython
kullanırsanız sadece senin Btw makro
def your_locate_label(self, linecontour, labelwidth):
# some magic
pass
ar = np.array([[1,0], [0,1]]
c = matplotlib.contour(ar)
c.locate_label = your_locate_label
c.clabel()
komplo eski yöntem üzerine
veya doğrudan çağırmak sizin dosya üzerinde $EDITOR
o Evet, şimdi
%edit c.clabel
ile tanımlanır edildi etiket konumlarını kontrol etmenin bir yoludur! https://github.com/matplotlib/matplotlib/pull/642
plt.figure()
CS = plt.contour(X, Y, Z)
manual_locations = [(-1, -1.4), (-0.62, -0.7), (-2, 0.5), (1.7, 1.2), (2.0, 1.4), (2.4, 1.7)]
plt.clabel(CS, inline=1, fontsize=10, manual=manual_locations)
manuel x, y bir iterable nesne olabilir Tuplelerin. Kontur etiketleri, her x, y pozisyonunda fare tıklanmış gibi oluşturulacaktır. – Faber
Otomatik etiketlemeye izin vermenin bir yolu var mı, ve daha sonra, eksenleri kesişen herhangi bir nesneyi kaldırmak (ve belki de iyileştirmek) için etiketler arasında geçiş yapmanın bir yolu var mı? –
- 1. Contour clabel metin nesnesinin yönünü değiştirme
- 2. Python OpenCV Contour ağaç hiyerarşisi
- 3. Ben denedim (yerine bir metin koymak istiyorum kontur değerinin) benim kontur etiketin metnini belirtmek istiyoruz Matplotlib
- 4. matplotlib
- 5. Matplotlib
- 6. Matplotlib
- 7. matplotlib
- 8. Matplotlib
- 9. Matplotlib
- 10. matplotlib
- 11. Matplotlib
- 12. matplotlib
- 13. Matplotlib
- 14. matplotlib
- 15. Matplotlib
- 16. Matplotlib
- 17. MatPlotLib
- 18. Matplotlib
- 19. Matplotlib
- 20. Ters Coğrafi Konum Geçerli Konum
- 21. Konum için konum belirlenirken konum belirleyici kayboluyor Android Studio
- 22. Liste görünümünde satırın konum (konum) nasıl alınacağı
- 23. SpecialFolder.Kişisel konum
- 24. Konum boyutlandırma
- 25. Coğrafi Konum
- 26. matplotlib ben matplotlib alabilirsiniz hiçbir özellik 'pyplot'
- 27. Matplotlib: saydam renklerle dolu kontur çizimi
- 28. Matplotlib imshow
- 29. Python Matplotlib
- 30. Matplotlib - Sadece
Ben bu konunun yayınlanmıştır bulamadık, bu yüzden yapılan bir yenisi: https://github.com/matplotlib/matplotlib/issues/613 – keflavich