Chciałbym kontrolować położenie clabels matplotlib na wykresie konturu, ale bez korzystania z instrukcji = True flagi w zawijas. Na przykład, chciałbym podać współrzędną x i mieć etykiety utworzone w punktach przechodzących przez tę linię. Widzę, że można uzyskać lokalizację poszczególnych etykiet za pomocą get_position(), ale utknąłem w tym. Każda pomoc będzie bardzo ceniona. Dzięki!Matplotlib Contour Clabel Lokalizacja
Odpowiedz
Nie, nie ma żadnej możliwości wbudowania w matplotlib, aby to zrobić. Powinieneś albo mieszkać z domyślnymi lokalizacjami, albo przejść w pełni interaktywnie za pomocą instrukcji i za pomocą myszy.
Być może zechcesz zgłosić to jako raport o błędach, aby usprawnić swoje algorytmy.
Istnieje wiele opcji do obejścia tego. Pierwszym jest programowe umieszczanie tekstu na rysunku konturu. W ten sposób nie będziesz w stanie niezawodnie usunąć linii pod tekstem. Zakładając, że masz kontur c
, możesz znaleźć linie konturu w c.collections
. Dla każdej linii konturu wywołaj get_paths
i umieść tekst na tej ścieżce.
Inną opcją byłoby zastąpienie kod ręcznym umieszczeniu (w matplotlib.contour.BlockingContourLabeler
) lub dostosować kod, który wyszukuje pozycje etykiet (w matplotlib.contour.locate_label
), ale obie funkcje są dość gęsta. Jeśli można wymyślić zamiennik pracy dla locate_label
prostu nadpisać starą metodę w swojej kreślenia 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()
Btw, jeśli używasz ipython
można łatwo przeglądać źródła funkcji z interaktywnej sesji z
%psource c.clabel
lub bezpośrednio powoływać się na swój $EDITOR
pliku zostały zdefiniowane jest z
%edit c.clabel
Tak, tam teraz to sposób na kontrolowanie lokalizacji etykiet! 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)
instrukcja może być iterable przedmiot x, y krotki. Etykiety konturu zostaną utworzone tak, jakby kliknięcie myszy odbywało się na każdej pozycji x, y. – Faber
Czy istnieje sposób na umożliwienie zautomatyzowanego etykietowania, a następnie przeplatanie etykiet, aby usunąć (i być może poprawić) wszystkie przecinające się osie? –
- 1. Zmiana tekstu clabel w matplotlib
- 2. Jak wygładzić kontur konturu matplotlib?
- 3. Baza lokalizacja + + .strings Storyboard -> no lokalizacja
- 4. C# lokalizacja
- 5. libAdIdAccess.a lokalizacja?
- 6. Lokalizacja meteorsa
- 7. Lokalizacja SSIS
- 8. google.maps.places.Autocomplete lokalizacja
- 9. Animacja z konturami matplotlib
- 10. Lokalizacja w tle iOS Lokalizacja nie wysyłająca żądania http
- 11. Lokalizacja rodzimego regionu rozwojowego, lokalizacja podstawowa i język AppStore (pakiet)
- 12. lokalizacja nginx regex
- 13. gwarantowana lokalizacja punktów wektorowych?
- 14. Lokalizacja otwartego pliku
- 15. .NET Lokalizacja a branding
- 16. MonoTouch: lokalizacja folderu tmp?
- 17. Angular4: Lokalizacja dla użytkownika
- 18. Lokalizacja klawiszy klawiatury
- 19. $ lokalizacja hash prefiks
- 20. nagłówek opóźnienie lokalizacja
- 21. BlackBerry: Lokalizacja, pakiet zasobów
- 22. iPhone en_ * lokalizacja sublanguage
- 23. Lokalizacja head.phtml w Magento
- 24. Obecna lokalizacja GPS GPS
- 25. .htaccess: Lokalizacja niedozwolona tutaj
- 26. Lokalizacja i rysunki
- 27. Lokalizacja sygnału wyjściowego klanu
- 28. SIFT Keypoint Lokalizacja
- 29. Lokalizacja legendy Achartengine
- 30. Lokalizacja w MonoDroid
nie mogę znaleźć ten problem pisał, więc zrobiłem nowe: https://github.com/matplotlib/matplotlib/issues/613 – keflavich