繁体   English   中英

R Markdown:如何使RStudio显示内联而不是新窗口的Python图?

[英]R Markdown: How can I make RStudio display Python plots inline instead of in new window?

所以,我最后一直在广泛使用R Markdown,我对它的功能非常满意。

但是,我遇到了python图的问题。 我有一大块python代码,我在python中绘制多个数字。

当我使用R执行此操作时,RStudio将显示此块中生成的所有绘图并排。

不幸的是,当用一大块python代码做同样的事情时,RStudio会打开一个新窗口显示图表, 然后代码执行停止,直到我关闭该窗口 ,然后它绘制下一个图,我必须再次关闭它,等等

是否有可能强制RStudio将数字内联,然后继续执行代码? 感谢您的帮助!

为了扩展我之前的评论,我将详细说明一个完整的答案。 使用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

NB根据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分发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM