编译好了GR,使用Plots却无法画图

在提问之前请确定你已经努力阅读了文档,并且尝试自己在互联网上搜索。

请尽可能提供你的demo代码或者GitHub的gist地址。

# code

julia> x=1:10
1:10

julia> y=randn(10)
10-element Array{Float64,1}:
0.5312980216667252
0.020136687115275
-1.39684661041237
-0.4326330986004357
-0.6337635938057279
0.05934026674979013
-0.9303235605194948
0.952339142271928
1.6385472992460286
-0.7293951846558439

julia> plot(x,y)
WARNING: both GR and Plots export “plot”; uses of it in module Main must be qualified
ERROR: UndefVarError: plot not defined
Stacktrace:
[1] top-level scope at REPL[17]:1

(@v1.5) pkg> Pkg.build(“GR”)
ERROR: Could not determine command

julia> Pkg.build(“GR”)
ERROR: UndefVarError: Pkg not defined
Stacktrace:
[1] top-level scope at REPL[19]:1

julia> import Pkg

julia> Pkg.build(“GR”)
Building GR → C:\Users\YEXIN\.julia\packages\GR\BwGt2\deps\build.log

julia> plot(x,y)
ERROR: UndefVarError: plot not defined
Stacktrace:
[1] top-level scope at REPL[22]:1

GR是一个绘图库, Plots也是一个绘图库。两个库都定义了 plot这个函数。所以如果using Plots, GR的话,plot 这个函数究竟是 Plots.plot 还是 GR.plot 是不清楚的。报错信息已经说的很清楚了

WARNING: both GR and Plots export “plot”; uses of it in module Main must be qualified

如果说要用的是Plots.plot的话,解决方案有两个:

  • 不要 using GR
  • plot的地方改成 Plots.plot
2 个赞

另外补充一点说明:

Plots 的角度来说,Plots 一般被称为绘图前端,它定义了一套统一的语法。实际的绘图工作交给后端来进行,比如说 GR 是Plots默认的绘图后端。

在用 Plots 的时候会遇到类似于

using Plots
pyplot()
using Plots
gr()

这样的代码, 实际上就是告诉 Plots 将默认的绘图工作交给某个具体的后端来进行。

所以实际上并不需要 using Plots, GR, 而只需要 using Plots; gr()