Ben*_*son 5 python r matplotlib r-markdown
我正在尝试学习 R markdown / notebook 来实现 R 和 Python 的代码块。我可以按照合理的标准使用 R,但我是 Python 新手。我已经将 R markdown 下载到 R studio 并按照提示下载 miniconda 并这样做了。
我想做一个基本的情节,看看它是否有效。
我点击“插入一个新的 Python 块”
然后将以下代码复制并粘贴到“Python 块”中,该代码在使用 Spyder 环境的 Python 中运行良好。
import matplotlib.pyplot as plt
x = [2, 4, 6, 8, 10, 12]
y = [1, 3, 5, 6, 9, 15]
plt.plot(x, y)
plt.show()
Run Code Online (Sandbox Code Playgroud)
返回以下错误:
Error in py_call_impl(callable, dots$args, dots$keywords) :
TypeError: use() got an unexpected keyword argument 'warn'
Run Code Online (Sandbox Code Playgroud)
我在 r 块中使用以下内容安装了 matplotlib:
library(reticulate)
py_install("matplotlib")
Run Code Online (Sandbox Code Playgroud)
我尝试将这个块粘贴到一个 Python 块和一个 R 块中:
{r,engine='python'}
Run Code Online (Sandbox Code Playgroud)
但无济于事。我看不到任何人有相同的错误或指定如何能够从 Python 导入的指南,这一切似乎都显示这些块直接开箱即用。如果我遗漏了一些明显的东西,我深表歉意。我已确保已卸载所有其他版本的 Python。任何建议将不胜感激,因为我希望有一天能够在这件事中集成 Python、R 和 bash 脚本!
会话信息:
Windows 10, R version 3.6.3 (2020-02-29), R Studio Version 1.2.5001. R version 3.6.3 (2020-02-29)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.1252
[2] LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] knitr_1.28 reticulate_1.16
loaded via a namespace (and not attached):
[1] compiler_3.6.3 Matrix_1.2-18 tools_3.6.3 rappdirs_0.3.1
[5] Rcpp_1.0.4.6 grid_3.6.3 jsonlite_1.6.1 xfun_0.9
[9] lattice_0.20-38
Run Code Online (Sandbox Code Playgroud)
小智 9
使用 reticulate 和 matplotlib 时,我遇到了完全相同的错误。
我通过降级我的 matplotlib 版本来修复它,例如:
pip install matplotlib==3.2
Run Code Online (Sandbox Code Playgroud)
您可以通过运行pip freeze
并找到 matplotlib 条目来验证 matplotlib 是否已降级。它应该看起来像matplotlib==3.2.0
. (也许尝试从 r 执行此操作,这样您就可以确定您正在使用正确的 python 安装)。
我认为这个问题是由于在最新版本的 matplotlib 中从 matplotlib 函数中删除了 'warn' 参数引起的,并且 R/reticulate 假定该函数的行为较旧。