I have a little computational physics code written as a Julia package, which includes some helper ‘plot’ functions to generate (output) figures.
However, just using Plots
in the package preamble is enough to seriously slow down the use of the code when e.g. running tests, or just getting numeric results.
If I don’t have a ‘using’ statement, the relevant functions fail to find the ‘plot’ command, even when using Plots
is explicitly imported into the script.
Is there any sensible way to deal with this (occasional, optional) dependency? Should I separate the plotting code (with a using Plots
dependency) into a separate sub-Module
?
2 Likes
Don’t depend on Plots.jl. Depend on RecipesBase and write recipes.
6 Likes
Certainly not a bad idea.
Is there no way to escape having to Using FOO
at the granularity of the entire package?
In the short term I have split off a ‘plot’ mini-package, which has the Using Plots
dependency. This seems to work well enough for my needs, and would allow future deprecation + replacement with a RecipesBase recipe.
There is not, which is why packages which are large and expect people to build dependencies have a way out, which for Plots.jl is recipes. You shouldn’t avoid them: they were built for this purpose.
1 Like
Okey doke! Your replies were very clear and immediately useful, thank you.
2 Likes
No problem. I’ll link the recipes page since I haven’t yet:
http://docs.juliaplots.org/latest/recipes/
and note that if you need help with writing recipes (they can be a little confusing at first, but once you understand it you’ll see it’s very similar to just writing a plot
command in disguise), just stop by the chatroom:
https://gitter.im/tbreloff/Plots.jl