Dlaczego wiele przykładów używa "fig, ax = plt.subplots () " w Matplotlib/pyplot/python

Uczę się używać matplotlib studiując przykłady, a wiele przykładów wydaje się zawierać linię jak poniżej przed utworzeniem pojedynczego wykresu...

fig, ax = plt.subplots()

Oto kilka przykładów...

Widzę, że ta funkcja jest często używana, mimo że przykład próbuje utworzyć tylko jeden wykres. Czy jest jakaś inna przewaga? Na oficjalne demo dla subplots() używa również f, ax = subplots podczas 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')
Author: Community, 2015-12-08

2 answers

plt.subplots() funkcja zwracająca krotkę zawierającą figurę i Obiekty osi. Tak więc przy użyciu fig, ax = plt.subplots() rozpakowujesz tę krotkę do zmiennych fig i ax. Posiadanie fig 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'). Na pewno nie musisz używać zwróconego obiektu figure, ale wiele osób używa go później, więc często go widzisz. Ponadto wszystkie obiekty osi (obiekty, które mają metody kreślenia), mają postać nadrzędną obiekt tak czy siak:

fig, ax = plt.subplots()

Jest bardziej zwięzły niż ten:

fig = plt.figure()
ax = fig.add_subplot(111)
 191
Author: jonchar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-08 17:51:25

Tylko dodatek tutaj.

Następujące pytanie brzmi: co jeśli chcę więcej podprogramów na rysunku?

Jak wspomniano w Doc, możemy użyć fig = plt.subplots(nrows=2, ncols=2), Aby ustawić grupę podprogramów z siatką (2,2) w jednym obiekcie rysunku.

Następnie, jak wiemy, fig, ax = plt.subplots() zwraca krotkę, spróbujmy najpierw fig, ax1, ax2, ax3, ax4 = plt.subplots(nrows=2, ncols=2).

ValueError: not enough values to unpack (expected 4, got 2)

Powoduje błąd, ale nie martw się, ponieważ teraz widzimy, że plt.subplots() rzeczywiście zwraca krotkę z dwoma elementami. Pierwszy musi być obiektem figur, a drugi powinna być grupą obiektów podprogramów.

Spróbujmy jeszcze raz:

fig, [[ax1, ax2], [ax3, ax4]] = plt.subplots(nrows=2, ncols=2)

I sprawdzić typ:

type(fig) #<class 'matplotlib.figure.Figure'>
type(ax1) #<class 'matplotlib.axes._subplots.AxesSubplot'>

Oczywiście, jeśli używasz parametrów jako (nrows=1, ncols=4), to format powinien być:

fig, [ax1, ax2, ax3, ax4] = plt.subplots(nrows=1, ncols=4)

Więc pamiętaj, aby konstrukcja listy była taka sama jak siatka podprogramów, którą ustawiliśmy na rysunku.

Mam nadzieję, że to ci pomoże.
 25
Author: Duskash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-21 04:29:44