Как работать с несколькими фигурами с помощью matplotlib в цикле for - PullRequest
0 голосов
/ 13 июня 2018

Я хочу изобразить разные вещи на двух разных фигурах только в 1 цикле (у меня есть огромная матрица, которую я не хочу ставить 2 для циклов), например:

plt.figure(0)
plt.figure(1)
for i in range(10):
   #plot it only on the figure(0)
   plt.plot(np.arange(10), np.power(np.arange(10), i), label = 'square') 
   #plot it only on the figure(1)
   plt.plot(np.arange(10), np.power(np.arange(10), 1/i), label = '1/square') 
   plt.legend() #if it does for both figures seperately
plt.show()

Как можноЯ достиг этого?Большое спасибо.

1 Ответ

0 голосов
/ 13 июня 2018

Использование состояния, похожего на состояние pyplot

Вам необходимо «активировать» соответствующую фигуру перед построением графика на ней.

plt.figure(0)
plt.figure(1)

for i in range(10):
   #plot it only on the figure(0)
   plt.figure(0)
   plt.plot(np.arange(10), np.power(np.arange(10), i), label = 'square') 
   #plot it only on the figure(1)
   plt.figure(1)
   plt.plot(np.arange(10), np.power(np.arange(10), 1/i), label = '1/square')

#legend for figure(0)
plt.figure(0)
plt.legend()
#legend for figure(1)
plt.figure(1)
plt.legend()
plt.show()

Использование объектно-ориентированного стиля

Работа с объектами и их методами напрямую.

fig0, ax0 = plt.subplots()
fig1, ax1 = plt.subplots()
for i in range(10):
   #plot it only on the fig0
   ax0.plot(np.arange(10), np.power(np.arange(10), i), label = 'square') 
   #plot it only on the fig1
   ax1.plot(np.arange(10), np.power(np.arange(10), 1/i), label = '1/square') 

ax0.legend()
ax1.legend()
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...