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")
```
который производит следующее без любого процесса прерывание:
источник: 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.