所以,我最后一直广泛使用R Markdown,我对它的功能非常满意。
但是,我遇到了python图的问题。我有一大块python代码,我在python中绘制了多个数字。
当我使用R执行此操作时,RStudio将显示此块中生成的所有图并排显示。
不幸的是,当使用一大块python代码执行相同操作时,RStudio会打开一个新窗口,在其中显示绘图,然后代码执行停止,直到我关闭该窗口,然后它绘制下图,我必须再次关闭它等等。
是否有可能强制RStudio将数字内联,然后继续执行代码?感谢您的帮助!
答案 0 :(得分:14)
为了扩展我之前的评论,我将详细说明一个完整的答案。使用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")
```
在没有任何进程中断的情况下产生以下内容:
N.B。根据RStudio v1.2.679-1 Preview的release notes,此版本将显示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 作为您的python发行版,您可能会遇到一个问题,即由于缺少路径/环境变量的问题而无法从RStudio找到 Qt 。
错误将类似于:
此应用程序无法启动,因为它无法找到或加载Qt平台插件" windows"在"",重新安装应用程序可能会解决此问题。
快速解决方法是将以下内容添加到python块以设置环境变量。
import os
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = '/path/to/Anaconda3/Library/plugins/platforms'
将/path/to
替换为您的Anaconda发行版的相关位置。