ClimateMARGO.jl icon indicating copy to clipboard operation
ClimateMARGO.jl copied to clipboard

Replace PyPlot calls with Plots.jl

Open hdrake opened this issue 4 years ago • 5 comments

@fonsp has mentioned that having PyPlot as a dependency for ClimateMARGO.jl unecessarily complicates things.

I see three options for moving forward:

  1. Re-implement plotting functions using Plots.jl
  2. Remove plotting submodule from ClimateMARGO.jl and include it in separate PlotMARGO.jl package, or more general utility package
  3. Same as (2) but re-implement using Plots.jl

What do you think @fonsp? My understanding is that you already have a hacky way of removing the plotting package dependencies– is this even necessary? I think it might be desirable even for your average user because it will decrease build / binder spin-up time?

hdrake avatar Jan 17 '21 23:01 hdrake

I think rewriting to Plots.jl is a good idea, partly because right now the following does not work:

  • Get a new computer
  • Install Julia
  • pkg> add ClimateMARGO
  • julia> using ClimateMARGO

This is because the last command will initialize PyPlot.jl, which searches for an existing installation of matplotlib, and if not found, it prints an error with instructions.


About 1.2.3.: If you use Plots.jl (1.), then you can write the plot functions without adding Plots.jl as a dependency to ClimateMARGO, so (2.) and (3.) are no longer necessary.

There is a package specifically for this situation: https://github.com/JuliaPlots/RecipesBase.jl . It is a "mock version" of Plots.jl that allows packages to define their own plots using plot commands, but they only work if the user installs Plots themselves. But if a user does not want MARGO's plotting functions, then there is very little overhead.

fonsp avatar Jan 19 '21 14:01 fonsp

It is a "mock version" of Plots.jl that allows packages to define their own plots using plot commands, but they only work if the user installs Plots themselves.

Will this be transparent enough for users? Like it will give instructions when you try to plot? I don’t want people to expect plots and not know why they don’t show up.

hdrake avatar Jan 19 '21 14:01 hdrake

That's a good point -- currently it does not, but I have submitted this to https://github.com/JuliaPlots/Plots.jl/issues/4431

If they can't fix it soon, we can write our own workaround to print this warning.

fonsp avatar Jan 20 '21 12:01 fonsp

We can also just make Plots.jl one of our dependencies (without the Recipes trick). Maybe we are over-optimizing by not including it, even though users of ClimateMARGO will very likely want to plot the results.

fonsp avatar Jan 20 '21 12:01 fonsp

Addressing this issue in https://github.com/ClimateMARGO/ClimateMARGO.jl/pull/84

hdrake avatar Feb 05 '22 16:02 hdrake