Как при желании показать фигуру в блокноте Jupyter - PullRequest
0 голосов
/ 01 октября 2019

Я хотел бы иметь код, который дополнительно отображает фигуру, сгенерированную с помощью matplotlib в блокноте Jupyter. Причина, по которой я хочу, заключается в том, что рисунки сохраняются на диске, и иногда было бы неплохо не показывать их в самой записной книжке.

Кроме того, я бы хотел, чтобы несколько графиков былисоздан в одной ячейке с некоторыми показанными, а некоторые не показанными.

import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(-5, 5, 100)
y1 = t
y2 = t**2
show_fig1 = True
show_fig2 = True

fig1 = plt.figure()
ax1 = fig1.add_subplot(1, 1, 1)
ax1.plot(t,y1)
fig1.savefig('fig1.png')
print('Showing Figure 1:')
if show_fig1:
    plt.show()

fig2 = plt.figure()
ax2 = fig2.add_subplot(1, 1, 1)
ax2.plot(t,y2)
fig2.savefig('fig2.png')
print('Showing Figure 2:')
if show_fig2:
    plt.show()

print('Done Showing Figures')

Приведенный выше код не работает, но это мое лучшее усилие.

Если show_fig1=False и show_fig2=True, то рис.1 будет отображаться, как только будет вызван plt.show() в блоке кода fig2.

Если show_fig1=True и show_fig2=False затем fig1 отображается правильно, но fig2 по-прежнему появляется в конце ячейки (после того, как напечатано «Готово с отображением рисунков»).

Если они оба ложные, то оба графика появляются в самом концеячейки.

Я пробовал другие комбинации, такие как fig1.show() вместо plt.show(), но, похоже, это не работает. Я пробовал различные настройки, такие как использование или не использование %matplotlib inline или ion() и ioff().

Есть предложения?

1 Ответ

1 голос
/ 01 октября 2019

Может быть, это работает для вас:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

t = np.linspace(-5, 5, 100)
y1 = t
y2 = t**2
show_fig1 = True
show_fig2 = True

fig, ax = plt.subplots()
ax.plot(t, y1)
plt.savefig('fig1.png')
if show_fig1:
    plt.show()
else:
    plt.close()

fig, ax = plt.subplots()
ax.plot(t, y2)
plt.savefig('fig2.png')
if show_fig2:
    plt.show()
else:
    plt.close()

print('Done Showing Figures')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...