Смешать интерактивные и встроенные сюжеты matplotlib? - PullRequest
1 голос
/ 09 марта 2020

Многие графики просто не обязательно должны быть интерактивными, поэтому я попытался изменить их на встроенные.

Я безуспешно пытался выполнить следующее:

  • plt.close(fig). Он очищает цифру

  • plt.ioff(), ошибка

  • коды переноса между %matplotlib inline %matplotlib notebook. Он закрывает другие интерактивные сюжеты

1 Ответ

2 голосов
/ 09 марта 2020

Может быть только один активный бэкэнд. Можно было бы изменить бэкэнд, но для этого потребовалось бы закрыть интерактивные фигуры.

Опция заключается в том, чтобы работать с интерактивным бэкэндом (например, %matplotlib widget) и вызывать пользовательскую функцию, которая показывает изображение в формате png, как только это необходимо.

#Cell1
%matplotlib widget

#Cell2
import matplotlib.pyplot as plt


def fig2inline(fig):
    from IPython.display import display, Image
    from io import BytesIO
    plt.close(fig)
    buff = BytesIO()
    fig.savefig(buff, format='png')
    buff.seek(0) 
    display(Image(data=buff.getvalue()))

#Cell3: (show the interactive plot)
fig, ax = plt.subplots(figsize=(3, 1.7))
ax.plot([1,3,4]);

#Cell4: (show the inline plot)
fig2, ax2 = plt.subplots(figsize=(3, 1.7))
ax2.plot([3,1,1]);
fig2inline(fig2)

enter image description here

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