Как показать две фигуры с помощью matplotlib? - PullRequest
61 голосов
/ 12 октября 2011

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

Ответы [ 4 ]

73 голосов
/ 12 октября 2011

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

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

47 голосов
/ 12 октября 2011

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

9 голосов
/ 29 июня 2018

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


Сделано:

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 ()' только один раз после последней цифрыРаботал на меня.

2 голосов
/ 24 декабря 2017

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

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...