您可以使用reticulate 做到这一点,但大多数时候在尝试按照教程进行操作时,您可能会遇到一些没有得到充分解释的技术细节。
我的回答有点晚了,但我希望这是一个以正确方式进行的彻底演练 - 不是渲染它,然后将其加载为 png,而是让 python 代码更“本机”地执行。
第 1 步:从 RStudio 配置 Python
您想插入一个 R 块,并运行以下代码来配置您要使用的 Python 版本的路径。大多数操作系统附带的默认python 通常是过时的python 2,而不是您安装软件包的位置。这就是为什么这样做很重要的原因,以确保 Rstudio 将使用指定的 python 实例,您可以在其中找到您的 matplotlib 库(以及您将用于该项目的其他库):
library(reticulate)
# change the following to point to the desired path on your system
use_python('/Users/Samuel/anaconda3/bin/python')
# prints the python configuration
py_config()
您应该会看到您的会话配置了您指定的设置:
python: /Users/Samuel/anaconda3/bin/python
libpython: /Users/Samuel/anaconda3/lib/libpython3.6m.dylib
pythonhome: /Users/Samuel/anaconda3:/Users/Samuel/anaconda3
version: 3.6.3 |Anaconda custom (64-bit)| (default, Oct 6 2017, 12:04:38) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]
numpy: /Users/Samuel/anaconda3/lib/python3.6/site-packages/numpy
numpy_version: 1.15.2
python versions found:
/Users/Samuel/anaconda3/bin/python
/usr/bin/python
/usr/local/bin/python
/usr/local/bin/python3
/Users/Samuel/.virtualenvs/r-tensorflow/bin/python
第二步:熟悉的plt.show
在您的 R Markdown 文档中添加一个 Python 块(不是 R!)(参见随附的屏幕截图),您现在可以编写本机 Python 代码。这意味着熟悉的plt.show() 和plt.imshow() 无需任何额外工作即可工作。它将被渲染并可以使用knitr编译成HTML / PDF。
这将起作用:
plt.imshow(my_image, cmap='gray')
或者更详细的例子:
import numpy as np
import matplotlib.pyplot as plt
import os
import cv2
DATADIR = '/Users/Samuel/Datasets/PetImages'
CATEGORIES = ['Dog', 'Cat']
for category in CATEGORIES:
path = os.path.join(DATADIR, category) # path to cat or dog dir
for img in os.listdir(path):
img_array = cv2.imread(os.path.join(path,img), cv2.IMREAD_GRAYSCALE)
plt.imshow(img_array, cmap='gray')
plt.show()
break
break
输出:
第 3 步:编织成 HTML / PDF / Word 等
像往常一样继续编织。最终产品是使用 R Markdown 以 Python 代码完成的格式精美的文档。 RStudio 已经走了很长一段路,我很惊讶它对 Python 代码的支持程度并不为人所知,所以希望任何偶然发现这个答案的人都会发现它提供了丰富的信息并学到了一些新东西。