Создать несколько фигур в Pyplot, но показать только одну - PullRequest
0 голосов
/ 31 октября 2018

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

Насколько я понимаю, plt.show() покажет все графики. Кажется логичным, что если я выделю маркеры фигур (т.е. сделаю fig1 = plt.figure()), а затем использую fig1.show(), это должно показать только фигуру, связанную с этим маркером.

Вот MWE:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 100)
y1 = np.random.rand(100)
y2 = np.random.rand(100)

fig1 = plt.figure()
plt.plot(x, y1, 'o')

fig2 = plt.figure()
plt.plot(x, y2, 'o')

fig1.show()

Кажется, это работает, но фигура сразу исчезает после ее создания. Насколько я понимаю, fig1.show() должен находиться в цикле, поскольку метод класса Figure.show() не вызывает цикл while, как plt.show().

Я понимаю, что это похоже на следующий вопрос: Как я могу показать цифры отдельно в matplotlib? но принятый ответ, похоже, не решает исходную проблему (как указано в комментариях).

Правильно ли размещать fig1.show() в цикле while? Если да, то как ты это делаешь?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

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

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 100)
y1 = np.random.rand(100)
y2 = np.random.rand(100)

fig1 = plt.figure()
plt.plot(x, y1, 'o')

fig2 = plt.figure()
plt.plot(x, y2, 'o')

def figshow(figure):
    for i in plt.get_fignums():
        if figure != plt.figure(i):
            plt.close(plt.figure(i))
    plt.show()

figshow(fig2)
0 голосов
/ 31 октября 2018

Вы можете добавить оператор, который ожидает ввода пользователя, затем цифра отобразится и закроется после нажатия клавиши:

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