针对如题所示的问题,昨天鼓捣了很久,成功了一半,求教大佬。
描述如下:
一些用户遇到了(但是人不多?导致解决方案不是完全适合)的一个问题,在安装PyPlot包之后,随意从网上找到一段代码测试:
using PyPlot
y = rand(20,2)
x = 1:20
plot(x, y[:,1], lw=2.0, label="1st", color="r", linestyle="--")
plot(x, y[:,2], lw=1.5, label="2nd", color="b", linestyle="-")
grid(true)
legend(loc=0)
axis("tight")
xlabel("index")
ylabel("value")
title("A simple plot2")
没有弹出式窗口的画图,如果加一句show()
,发现报错:sys:1: UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.
根据查找的资料发现,根本问题在于,Matplotlib 的后端配置是agg这个non-interactive,比如我显示一下它的backend发现:
julia> matplotlib.get_backend()
"agg"
其实网上有类似情况,很多人都是在python中遇到了这个问题,然鹅,我的python配置却一切正常,在Julia中出现了问题,也是很amazing。
因此我认为需要更改配置,类似这篇文章“ matplotlib: 有关 Backend 的说明”(https://blog.csdn.net/liubing8609/article/details/115273215)
但似乎改变配置文件 matplotlibrc 后仍没有效果,我怀疑是没有重新加载,因此卸载了PyPlot,此外在重新安装时也更加注意(把package的文件夹也删除了),使用了如下了组合方法:
ENV["PYTHON"]="D:\\Download\\my app\\python\\python.exe"
] add PyPlot
加一次退格键,
ENV["PYTHON"]="D:\\Download\\my app\\python\\python.exe"
ENV["MPLBACKEND"]="TkAgg"
] build PyCall
也就是我很小心的在安装前再此设置了环境变量,然后我期待有一个好结果,于是用matplotlib.get_backend()
去证明一下吧。
julia> using PyPlot
julia> matplotlib.get_backend()
"TkAgg"
但事实上,问题解决了一半。我使用的平台是VS code,如果对Julia程序运行会在Julia REPL中进行,然鹅在这里backend仍然是agg!也就是我最需要的地方还是没有把后端改过来:
我为此感到不可思议和头疼,为什么在Julia中backend已经修改,但在Julia REPL中仍存在问题呢?
无论怎么说,这篇作为经验贴描述都足够仔细(因为本人吃尽网上帖子逻辑混乱的苦头),希望有人给出解决办法,同时供各位参考。