类型错误:use() 在导入 matplotlib 时得到了意外的关键字参数“警告”

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 假定该函数的行为较旧。

  • 这绝对有效,谢谢 - 我必须熟悉在命令行上使用 pip install (不要在 R 中做太多事情)来删除旧的 matplotlib 并使用您建议的代码安装旧版本。可悲的是,没有 15 的声誉,我什至无法投票支持你的答案!现在会联系网状人士,并尽力防止更多像我这样的菜鸟成为受害者。 (2认同)