R Markdown: как сделать RStudio отображать графики Python встроенными, а не в новом окне?

Итак, я широко использую R Markdown, и я довольно доволен тем, что он может сделать.

однако у меня проблема с сюжетами python. У меня есть кусок кода python, где я рисую несколько фигур в python.

когда я сделаю это с R, RStudio отобразит все графики, созданные в этом фрагменте, рядом друг с другом.

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

есть ли возможность заставить RStudio поместить цифры в строку, а затем продолжить выполнение кода? Заранее спасибо за помощь!

1 ответов


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

если мы используем тег fig.savefig вместо pyplot.show а то pyplot.close мы можем избежать всплывающих окон. Вот минимальный пример:

---
output: html_document
---

## Python *pyplot*

```{python pyplot, echo=FALSE}
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)

fig, ax = plt.subplots()
ax.plot(t, s)

ax.set(xlabel='time (s)', ylabel='voltage (mV)',
       title='About as simple as it gets, folks')
ax.grid()

fig.savefig("pyplot.png")
plt.close(fig)
```

```{r, echo=FALSE}
knitr::include_graphics("pyplot.png")
```

который производит следующее без любого процесса прерывание:

enter image description here

источник: matplotlib.org

В. Н. согласно заметки для RStudio v1.2.Предварительный просмотр 679-1, эта версия покажет графики matplotlib, испускаемые кусками Python.

обновление

используя последнюю версию предварительного просмотра, упомянутую выше, обновляя кусок для использования pyplot.show теперь будет отображать встроенный по желанию.

```{python pyplot, echo=FALSE}
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)

fig, ax = plt.subplots()
ax.plot(t, s)

ax.set(xlabel='time (s)', ylabel='voltage (mV)',
       title='About as simple as it gets, folks')
ax.grid()

plt.show()
```

для пользователей Anaconda

если вы используете Анаконда как ваш дистрибутив Python, вы можете столкнуться с проблемой, где Qt не найден из RStudio из-за проблемы с отсутствующей переменной path/environment.

ошибка будет выглядеть примерно так:

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

быстрое исправление состоит в том, чтобы добавить следующее в кусок python для настройки переменной среды.

import os
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = '/path/to/Anaconda3/Library/plugins/platforms'

замена /path/to С соответствующим местоположением для вашего распределения Anaconda.