After 1.5 years of Julia experience, I now write almost everything in Julia. I used to use Bourne shell, Ruby, Fortran, and a bit of Haskell, but I don’t need these any longer. Except I don’t know which plotting package is the right one for me. (And except for some things that Haskell does very well, like lazy recursion.)
When I started Julia, I read one of the official Julia webpages, which said that
Plot is the unified interface and you can switch backends to suit your needs. I thought, that’s a great idea!
So, since then, I’ve been exclusively using
Plots. It’s much more elegant and easier to use than “traditional” plotting methods common in other languages and environments.
But I found it sometimes very hard to find information about
Plots. I search Google and Julia Discourse, but almost always the information I find is exclusive to a particular package, like Makie and Matplotlib. The syntax I find there is totally different from
So, my question No.1 is: Is it possible to mix two ways?
p = plot( . . . )
function_specific_to_the_backend(p, . . .) # or something like this.
Also, sometimes I ask questions about plotting in this forum and I often get an answer like “package X can do that” and I end up not knowing how to replicate it in
Plots with X as the backend.
I don’t know whether it’s a problem of documentation of
Plots or whether the capability isn’t accessible form
Plots. I don’t think I understand the architecture of
I’m not talking about large things like contouring. I know contouring is available in
Plots. I’m talking about smaller things, like having three or more y axes for a single graph, specifying the absolute positions of the axes, controlling the the precision of numeric labels, specifying fonts of the letterings, plotting an arbitrary polygons and arrows on an existing plot, open-ended contouring levels, specifying exact colors for contour levels, extending plot elements outside the plotting rectangle, availability of geographical maps (country boundaries, elevation of land surface, etc.) without plotting maps myself, availability of map projections, etc., etc.
These aren’t big things, but I need them and since I’m not able to find out how to do these with
Plots, I give up Julia for producing figures and go back to an old plotting program I’m familiar with and have almost total control of.
I feel defeated.
So, my question No. 2 is, does
Plots do almost everything and is it just a documentation problem? Or is it that
Plots is still very young and its future is promising even if it doesn’t have those capabilities now? Or should I find a suitable package to me and learn its specific ways?
Then, supposing I’ll be migrating to another package, I still find it hard to decide on which one I should explore. Because I need to plot geographical maps, I search for it and find that
GMT.jl seems to be a great package. But when I search for other capabilities, sometimes
Makie.jl and sometimes another package, etc.
I’m a full-time researcher and I use programming languages and tools for my scientific work. I don’t have too much time to explore various packages before I decide on which one to go with.
As an aside . . . I’m the only Julia user among my colleagues as far as I know. A large fraction of my colleagues use Python or are switching to Python. It seems all of them use one well known plotting package. Is it called matplotlib? I then look over what matplotlib looks like and am dismayed to see its . . . how to put it . . . complicated user interface. I’m attracted to Julia, Ruby, and Haskell because of their elegance. The
Plots package suits Julia very well.
Python just works but it doesn’t look fun to program in it. As far as I can tell from the tutorials, matplotlib looks like it’s not much fun.