Подтвердить что ты не робот

Как показать две фигуры с помощью matplotlib?

У меня есть некоторые проблемы, одновременно рисуя две фигуры, не показанные на одном сюжете. Но, согласно документации, я написал код, и только цифра показывает. Я думаю, может быть, я потерял что-то важное. Может ли кто-нибудь помочь мне разобраться? Благодарю. (* Tlist_first *, используемый в коде, представляет собой список данных.)

plt.figure(1)
plt.hist(tlist_first, bins=2000000, normed = True, histtype ="step", cumulative = True, color = 'g',label = 'first answer')
plt.ylabel('Percentage of answered questions')
plt.xlabel('Minutes elapsed after questions are posted')

plt.axvline(x = 30, ymin = 0, ymax = 1, color = 'r', linestyle = '--', label = '30 min')
plt.axvline(x = 60, ymin = 0, ymax = 1, color = 'c', linestyle = '--', label = '1 hour')
plt.legend()
plt.xlim(0,120)
plt.ylim(0,1) 
plt.show()
plt.close() ### not working either with this line or without it

plt.figure(2)
plt.hist(tlist_first, bins=2000000, normed = True, histtype ="step", cumulative = True, color = 'g',label = 'first answer')

plt.ylabel('Percentage of answered questions')
plt.xlabel('Minutes elapsed after questions are posted')

plt.axvline(x = 240, ymin = 0, ymax = 1, color = 'r', linestyle = '--', label = '30 min')
plt.axvline(x = 1440, ymin = 0, ymax = 1, color = 'c', linestyle = '--', label = '1 hour')
plt.legend(loc= 4)
plt.xlim(0,2640)
plt.ylim(0,1)
plt.show()
4b9b3361

Ответ 1

В качестве альтернативы вызову plt.show() в конце script вы также можете управлять каждой фигурой отдельно:

f = plt.figure(1)
plt.hist........
............
f.show()

g = plt.figure(2)
plt.hist(........
................
g.show()

raw_input()

В этом случае вы должны позвонить raw_input, чтобы сохранить фигуры в живых. Таким образом вы можете выбрать динамически, какие цифры вы хотите отобразить

Примечание: raw_input() было переименовано в input() в Python 3

Ответ 2

Вы должны называть plt.show() только в конце после создания всех графиков.

Ответ 3

У меня была такая же проблема.


Сделал:

f1 = plt.figure(1)

# code for figure 1

# don't write 'plt.show()' here


f2 = plt.figure(2)

# code for figure 2

plt.show()


Напишите 'plt.show()' только один раз, после последней цифры. Работал на меня.

Ответ 4

В качестве альтернативы, я бы предложил включить интерактивный интерфейс в начале и на самом последнем сюжете, выключить его. Все будет отображаться, но они не исчезнут, так как ваша программа будет оставаться до тех пор, пока вы не закроете цифры.

import matplotlib.pyplot as plt
from matplotlib import interactive

plt.figure(1)
... code to make figure (1)

interactive(True)
plt.show()

plt.figure(2)
... code to make figure (2)

plt.show()

plt.figure(3)
... code to make figure (3)

interactive(False)
plt.show()