为了扩展我之前的评论,我将详细说明一个完整的答案。使用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
注意根据release notes for RStudio v1.2.679-1 Preview,此版本将显示 Python 块发出的 matplotlib 图。
更新
使用上面提到的最新预览版本,更新块以使用 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 用户
如果您使用 Anaconda 作为 Python 发行版,您可能会遇到由于缺少路径/环境变量的问题而无法从 RStudio 中找到 Qt 的问题。
错误将类似于:
此应用程序无法启动,因为它无法在“”中找到或加载 Qt 平台插件“windows”,重新安装该应用程序可能会解决此问题。
快速解决方法是将以下内容添加到 python 块中以设置环境变量。
import os
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = '/path/to/Anaconda3/Library/plugins/platforms'
将 /path/to 替换为 Anaconda 发行版的相关位置。