R Markdown: Как сделать так, чтобы RStudio отображал графики Python внутри, а не в новом окне? - PullRequest
0 голосов
/ 15 мая 2018

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

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

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

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

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

1 Ответ

0 голосов
/ 06 июня 2018

Чтобы расширить мой предыдущий комментарий, я уточню полный ответ.При использовании 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

NB Согласно примечаниям к выпуску для RStudio v1.2.679-1 Preview, эта версиябудет отображать графики matplotlib, испускаемые кусками Python.

Обновление

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

```{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

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

Ошибка будет выглядеть следующим образом:

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

Быстрое исправление заключается в добавлении следующего к коду Python для настройки переменной среды.

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

Замена /path/to соответствующим местоположением наваш дистрибутив Anaconda.

...