Я трохи розгублений, як працює цей код:
fig, axes = plt.subplots(nrows=2, ncols=2)
plt.show()
Як в цьому випадку діють смокини, оси? Що це робить?
Крім того, чому б не зробити це так само:
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
Я трохи розгублений, як працює цей код:
fig, axes = plt.subplots(nrows=2, ncols=2)
plt.show()
Як в цьому випадку діють смокини, оси? Що це робить?
Крім того, чому б не зробити це так само:
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
Відповіді:
Існує кілька способів зробити це. subplotsМетод створює фігуру поряд з подзаговор, які потім зберігаються в axмасиві. Наприклад:
import matplotlib.pyplot as plt
x = range(10)
y = range(10)
fig, ax = plt.subplots(nrows=2, ncols=2)
for row in ax:
for col in row:
col.plot(x, y)
plt.show()
Однак щось подібне також буде спрацьовувати, але це не так "чисто", хоча ви створюєте фігуру з субплотами і потім додаєте поверх них:
fig = plt.figure()
plt.subplot(2, 2, 1)
plt.plot(x, y)
plt.subplot(2, 2, 2)
plt.plot(x, y)
plt.subplot(2, 2, 3)
plt.plot(x, y)
plt.subplot(2, 2, 4)
plt.plot(x, y)
plt.show()
plot(x, y)мене є сюжет, що виходить із визначеної користувачем функції, яка створює графік з networkx. Як ним користуватися?
axn = ax.flatten()а потім for axes in axn: axes.plot(x,y)
import matplotlib.pyplot as plt
fig, ax = plt.subplots(2, 2)
ax[0, 0].plot(range(10), 'r') #row=0, col=0
ax[1, 0].plot(range(10), 'b') #row=1, col=0
ax[0, 1].plot(range(10), 'g') #row=0, col=1
ax[1, 1].plot(range(10), 'k') #row=1, col=1
plt.show()
axє, але не те, що є fig. Хто вони?
matplotlib.figure.Figureклас, за допомогою якого можна зробити багато маніпуляцій з накресленою фігурою. наприклад, ви можете додати кольорову панель до певної субплоти, ви можете змінити колір тла позаду всіх субпліт. ви можете змінити компонування цих підсплав або додати до них нову невелику сокиру. бажано, ви хочете отримати єдиний основний заголовок для всіх підплотів, які можна отримати fig.suptitle(title)методом. нарешті, коли ви задоволені сюжетом, можете зберегти його за допомогою fig.savefigметоду. @Leevo
Ви також можете розпакувати осі під час виклику субплотів
І встановіть, чи хочете ви поділити осі x та y між підзагортами
Подобається це:
import matplotlib.pyplot as plt
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, sharex=True, sharey=True)
ax1.plot(range(10), 'r')
ax2.plot(range(10), 'b')
ax3.plot(range(10), 'g')
ax4.plot(range(10), 'k')
plt.show()
Можливо, вас зацікавить той факт, що станом на matplotlib версії 2.1 другий код з питання також працює добре.
З журналу змін :
Тепер у класі рисунків є метод підзарядки. У класі "Клас" тепер є метод subplots (), який поводиться так само, як pyplot.subplots (), але на існуючому малюнку.
Приклад:
import matplotlib.pyplot as plt
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
plt.show()
читати документацію: matplotlib.pyplot.subplots
pyplot.subplots() повертає кортеж fig, ax , розпакований у дві змінні, використовуючи позначення
fig, axes = plt.subplots(nrows=2, ncols=2)
код
fig = plt.figure()
axes = fig.subplots(nrows=2, ncols=2)
не працює, тому що subplots()є функцією в pyplotне члені об'єкта Figure.