Uczę się używać matplotlib
, studiując przykłady, i wiele przykładów wydaje się zawierać linię podobną do następującej przed utworzeniem pojedynczego wątku ...
fig, ax = plt.subplots()
Oto kilka przykładów ...
Widzę, że ta funkcja jest często używana, mimo że w przykładzie próbuje się utworzyć tylko jeden wykres. Czy jest jakaś inna zaleta? Oficjalna wersja demonstracyjna subplots()
służy również do f, ax = subplots
tworzenia pojedynczego wykresu, a potem odwołuje się tylko do ax. To jest kod, którego używają.
# Just a figure and one subplot
f, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('Simple plot')
python
matplotlib
plot
visualization
neelshiv
źródło
źródło
Odpowiedzi:
plt.subplots()
to funkcja, która zwraca krotkę zawierającą figurę i obiekty osi. Dlatego podczas używaniafig, ax = plt.subplots()
rozpakuj tę krotkę do zmiennychfig
iax
. Posiadaniefig
jest przydatne, jeśli chcesz zmienić atrybuty na poziomie figury lub zapisać figurę jako plik obrazu później (np. Za pomocąfig.savefig('yourfilename.png')
). Z pewnością nie musisz używać zwróconego obiektu figurowego, ale wiele osób korzysta z niego później, więc często można go zobaczyć. Ponadto wszystkie obiekty osi (obiekty, które mają metody drukowania), i tak mają obiekt figury nadrzędnej, a zatem:jest bardziej zwięzłe niż to:
źródło
ax11, ax12, ax21, ax22
za pomocąfig.add_subplot(221)
(lub odpowiednio 222, 223, 224).Tutaj tylko dodatek.
Pytanie brzmi: co zrobić, jeśli chcę więcej wykresów na rysunku?
Jak wspomniano w Doc, możemy użyć
fig = plt.subplots(nrows=2, ncols=2)
do ustawienia grupy podplotów z siatką (2,2) w obiekcie z jedną figurą.Następnie, jak wiemy,
fig, ax = plt.subplots()
zwraca krotkę, spróbujmyfig, ax1, ax2, ax3, ax4 = plt.subplots(nrows=2, ncols=2)
najpierw.Zgłasza błąd, ale nie martw się, ponieważ teraz widzimy, że
plt.subplots()
faktycznie zwraca krotkę z dwoma elementami. Pierwszy musi być obiektem figurki, a drugi powinien być grupą obiektów podplotów.Spróbujmy więc jeszcze raz:
i sprawdź typ:
Oczywiście, jeśli użyjesz parametrów jako (nrows = 1, ncols = 4), wówczas format powinien mieć:
Pamiętaj więc, aby zachować konstrukcję listy taką samą, jak siatkę podplotów, którą ustawiliśmy na rysunku.
Mam nadzieję, że byłoby to dla ciebie pomocne.
źródło
fig, axes = plt.subplots(nrows=10, ncols=3)
iaxes = axes.flatten()
. Teraz można odnieść do każdej poletko o indeksie:axes[0]
,axes[1]
...nrows=1
, ponieważ wtedyaxes
jest zwracany płasko o długości równejncols
fig, axes = plt.subplots(nrows=1, ncols=3, squeeze=False)
Jako uzupełnienie pytania i powyższych odpowiedzi istnieje również istotna różnica między
plt.subplots()
iplt.subplot()
, zauważ brakujące's'
na końcu.Można użyć,
plt.subplots()
aby utworzyć wszystkie ich wykresy podrzędne jednocześnie, a to zwraca liczbę i osie (liczba mnoga osi) wykresów podrzędnych jako krotkę. Postać można rozumieć jako płótno, na którym malujesz szkic.Natomiast możesz użyć,
plt.subplot()
jeśli chcesz dodać podploty osobno. Zwraca tylko oś jednego wykresu podrzędnego.Jest jednak
plt.subplots()
preferowany, ponieważ daje łatwiejsze opcje bezpośredniego dostosowania całej sylwetkipodczas gdy za pomocą
plt.subplot()
trzeba będzie określić osobno dla każdej osi, co może stać się kłopotliwe.źródło
ax3 = plt.subplot(2,1,3)
nie będzie działać, ponieważ jest 2 na 1, która ma tylko 2 wykresy.Oprócz powyższych odpowiedzi można także sprawdzić typ obiektu, za pomocą
type(plt.subplots())
którego zwraca krotkę, z drugiej stronytype(plt.subplot())
zwraca,matplotlib.axes._subplots.AxesSubplot
którego nie można rozpakować.źródło