Plotting packages that support Julia v1.0

Is there a list of Plot packages that are confirmed as working with Julia 1.0? I’ve seen Gadfly isn’t there yet, which is unfortunate as I wanted to start learning Julia through using that one.

Plots, GR, PyPlot, PgfPlotsX definitely work. PlotlyJS and Makie are very close. (Edit: removed VegaLite which isn’t ready).

2 Likes

I think VegaLite is not quite ready yet, at least for me latest tag and master throw errors upon precompiling on 1.0.

Oh, sorry, I don’t use that myself I just thought I read that.

GMT.jl is also a plotting package and works on v0.7

As mentioned elsewhere on Discourse (List of working packages on v. 1.0 - #62 by tobias.knopp), it would be nice if this sort of info was right there on the entry page for Julia lang.

2 Likes

When I try to use GR I get:

(v1.0) pkg> build GR
  Building GR → `~/.julia/packages/GR/rnUaj/deps/build.log`
┌ Error: Error building `GR`: 
│ ERROR: LoadError: ArgumentError: Package Pkg not found in current path:
│ - Run `Pkg.add("Pkg")` to install the Pkg package.
│ 
│ Stacktrace:
│  [1] require(::Module, ::Symbol) at ./loading.jl:817
│  [2] include at ./boot.jl:317 [inlined]
│  [3] include_relative(::Module, ::String) at ./loading.jl:1038
│  [4] include at ./sysimg.jl:29 [inlined]
│  [5] include_ifexists at ./client.jl:191 [inlined]
│  [6] load_julia_startup() at ./client.jl:288
│  [7] exec_options(::Base.JLOptions) at ./logging.jl:312
│  [8] _start() at ./client.jl:421
│ in expression starting at /home/js/.julia/config/startup.jl:1
└ @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/Operations.jl:1068

and when I just use Plots:

julia> using Plots

julia> plot( cumsum(rand(10)))
ERROR: error compiling _plot!: error compiling _display: could not load library "libGR.so"
libGR.so: cannot open shared object file: No such file or directory
Stacktrace:
 [1] #plot#136(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Array{Float64,1}) at /home/js/.julia/packages/Plots/ex9On/src/plot.jl:57
 [2] plot(::Array{Float64,1}) at /home/js/.julia/packages/Plots/ex9On/src/plot.jl:51
 [3] top-level scope at none:0

The Plots issue you see is because your GR wasn’t built. That GR looks quite strange, though. Could you try ENV["GRDIR"]="";Pkg.build("GR") after updating your packages to the newest version?

Result:

  Building GR → `~/.julia/packages/GR/Oatug/deps/build.log`
┌ Error: Error building `GR`: 
│ ERROR: LoadError: ArgumentError: Package Pkg not found in current path:
│ - Run `Pkg.add("Pkg")` to install the Pkg package.
│ 
│ Stacktrace:
│  [1] require(::Module, ::Symbol) at ./loading.jl:817
│  [2] include at ./boot.jl:317 [inlined]
│  [3] include_relative(::Module, ::String) at ./loading.jl:1038
│  [4] include at ./sysimg.jl:29 [inlined]
│  [5] include_ifexists at ./client.jl:191 [inlined]
│  [6] load_julia_startup() at ./client.jl:288
│  [7] exec_options(::Base.JLOptions) at ./logging.jl:312
│  [8] _start() at ./client.jl:421
│ in expression starting at /home/js/.julia/config/startup.jl:1
└ @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/Operations.jl:1068

Your best bet is to open an issue on GR (provided your other packages are building - it looks almost like your whole julia install is having trouble). It works perfectly on my 1.0

Maybe I a will file a bug. I could successfully build CSVFiles as a test.

I also tried

Version 1.1.0-DEV.72 (2018-08-20)

with the same result.

It works well in 0.6.4 though.
Thanks for your attention.

cc @jheinen

btw: Looks like Gadfly/Compose is approaching 1.0 soon:
https://github.com/GiovineItalia/Gadfly.jl/pull/1189
https://github.com/GiovineItalia/Compose.jl/pull/282

1 Like

You have to temporarily disable/remove your startup file. This is not a problem of GR. There were other users having the same problem (with other packages), too.

@mkborregaard

1 Like

Thanks. That helped.

But after Pkg.up GR was updated. Pkg.build (after a few tries) did not result in errors but:

julia> using Plots

julia> plot( cumsum(rand(10)))
ERROR: error compiling _plot!: error compiling _display: could not load library "libGR.so"
libGR.so: cannot open shared object file: No such file or directory
Stacktrace:
 [1] #plot#136(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Array{Float64,1}) at /home/js/.julia/packages/Plots/ex9On/src/plot.jl:57
 [2] plot(::Array{Float64,1}) at /home/js/.julia/packages/Plots/ex9On/src/plot.jl:51
 [3] top-level scope at none:0

Regards
Johann

:heart:

Please download the latest run-time (for your platform) using

ENV["GRDIR"] = ""
Pkg.build("GR")

I still have no idea, why the latter is required on some system - there were several users complaining about that, but the above step should fix the problem …

Sorry, this is from a binary newly unpacked from the tar.gz I downloaded from julialang.org:

  _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.0.0 (2018-08-08)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> ENV["GRDIR"] = ""
""
julia> using Pkg

julia> Pkg.build("GR")
  Building GR → `~/.julia/packages/GR/5E5fX/deps/build.log`
┌ Error: Error building `GR`: 
│ ERROR: LoadError: failed process: Process(`grep ^ID_LIKE=`, ProcessExited(1)) [1]
│ Stacktrace:
│  [1] error(::String, ::Base.Process, ::String, ::Int64, ::String) at ./error.jl:42
│  [2] pipeline_error at ./process.jl:695 [inlined]
│  [3] pipeline_error(::Base.ProcessChain) at ./process.jl:708
│  [4] read(::Base.OrCmds) at ./process.jl:631
│  [5] get_os_release(::String) at /home/js/.julia/packages/GR/5E5fX/deps/build.jl:37
│  [6] top-level scope at /home/js/.julia/packages/GR/5E5fX/deps/build.jl:60
│  [7] include at ./boot.jl:317 [inlined]
│  [8] include_relative(::Module, ::String) at ./loading.jl:1038
│  [9] include(::Module, ::String) at ./sysimg.jl:29
│  [10] include(::String) at ./client.jl:388
│  [11] top-level scope at none:0
│ in expression starting at /home/js/.julia/packages/GR/5E5fX/deps/build.jl:45
└ @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.0/Pkg/src/Operations.jl:1068

It is not urgent for me, but might be worth while for the developers taking note of it.

Regards
Johann

Thanks for the hint. I added a check for missing keys in /etc/os-release. The problem should no longer exist.

VegaLite.jl should now work.

2 Likes