你可以使用
reticulate
来实现这个,但是在尝试教程时,你可能会遇到一些技术问题,而这些问题没有得到充分的解释。
我的回答可能有点晚,但我希望它能彻底地指导你正确地完成操作——不是将其呈现并加载为png文件,而是更加“本地”地执行Python代码。
步骤1:从RStudio配置Python
你需要插入一个R代码块,并运行以下代码来配置你想要使用的Python版本的路径。大多数操作系统默认的
python
通常是过时的Python 2,也不是你安装包的位置。这就是为什么这很重要的原因,确保Rstudio将使用指定的Python实例,你的
matplotlib
库(以及你将用于该项目的其他库)可以被找到:
library(reticulate)
use_python('/Users/Samuel/anaconda3/bin/python')
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
步骤2:熟悉的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)
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代码的支持程度不为人知,因此希望任何看到这个答案的人都能从中获得有益信息并学到新内容。