Próbuję zrobić kwadratowy wykres (używając imshow), czyli proporcje 1: 1, ale nie mogę. Żadna z tych czynności:
import matplotlib.pyplot as plt
ax = fig.add_subplot(111,aspect='equal')
ax = fig.add_subplot(111,aspect=1.0)
ax.set_aspect('equal')
plt.axes().set_aspect('equal')
Wygląda na to, że połączenia są po prostu ignorowane (problem, który często mam z matplotlib).
python
matplotlib
jtlz2
źródło
źródło
ax.axis('equal')
przez przypadek? Jak wszyscy powiedzieli, to, co zrobiłeś, powinno działać, aleax.axis
może być inną drogą do wypróbowania obejścia.Odpowiedzi:
Trzeci razy urok. Domyślam się, że jest to błąd, a odpowiedź Zhenya sugeruje, że został naprawiony w najnowszej wersji. Mam wersję 0.99.1.1 i stworzyłem następujące rozwiązanie:
To jest „force.png”:
Poniżej znajdują się moje nieudane, ale miejmy nadzieję, próby informacyjne.
Druga odpowiedź:
Moja „oryginalna odpowiedź” poniżej jest przesada, ponieważ robi coś podobnego do
axes.set_aspect()
. Myślę, że chcesz użyćaxes.set_aspect('auto')
. Nie rozumiem, dlaczego tak jest, ale generuje dla mnie kwadratowy wykres obrazu, na przykład ten skrypt:Tworzy wykres obrazu o „równych” proporcjach: i jeden z „automatycznym” współczynnikiem proporcji:
Kod podany poniżej w „oryginalnej odpowiedzi” stanowi punkt wyjścia dla wyraźnie kontrolowanego współczynnika proporcji, ale wydaje się być ignorowany po wywołaniu imshow.
Oryginalna odpowiedź:
Oto przykład procedury, która dostosuje parametry subplotu, aby uzyskać pożądany współczynnik proporcji:
Daje to następującą liczbę:
Mogę sobie wyobrazić, że jeśli masz wiele wykresów podrzędnych na rysunku, chciałbyś uwzględnić liczbę wykresów podrzędnych y i x jako parametry słów kluczowych (domyślnie 1 każdy) do podanej procedury. Następnie używając tych liczb oraz słów kluczowych
hspace
iwspace
, możesz sprawić, że wszystkie działki podrzędne będą miały prawidłowe proporcje.źródło
get_images
jest pusta lista (tak jak by się stałoax.plot([0,1],[0,2])
, możesz użyćget_xlim
iget_ylim
Jaka jest
matplotlib
używana wersja? Niedawno musiałem dokonać aktualizacji1.1.0
i wraz z niąadd_subplot(111,aspect='equal')
działa dla mnie.źródło
matplotlib
wersji2.0.2
.jupyter notebook
wersja5.0.0
. Dzięki.Po wielu latach sukcesów z odpowiedziami powyżej stwierdziłem, że to nie działa ponownie - ale znalazłem działające rozwiązanie dla wątków podrzędnych w
https://jdhao.github.io/2017/06/03/change-aspect-ratio-in-mpl
Oczywiście z pełnym uznaniem autora powyżej (który może raczej zamieścić tutaj), odpowiednie wiersze to:
Łącze zawiera również krystalicznie jasne wyjaśnienie różnych układów współrzędnych używanych przez matplotlib.
Dziękuję za wszystkie otrzymane świetne odpowiedzi - zwłaszcza @ Yann, które pozostanie zwycięzcą.
źródło
powinieneś spróbować z figaspect. Mi to pasuje. Z dokumentów:
Edycja: nie jestem pewien, czego szukasz. Powyższy kod zmienia płótno (rozmiar wydruku). Jeśli chcesz zmienić rozmiar okna matplotlib rysunku, użyj:
to daje okno 5x1 (szer. x wys.).
źródło
Ta odpowiedź jest oparta na odpowiedzi Yanna. Ustawi współczynnik kształtu dla wykresów liniowych lub log-log. Użyłem dodatkowych informacji z https://stackoverflow.com/a/16290035/2966723, aby sprawdzić, czy osie mają skalę logarytmiczną.
Oczywiście możesz użyć dowolnej wersji
log
, której użyłemscipy
, alenumpy
lubmath
powinno być w porządku.źródło