State of Plotting Packages as of 2018/12/15

The display problems should be fixed in GR master. You can also use “native” plotting (GKSTerm on macOS, GKSQt on Linux/Windows) by setting the GKS_NO_GUI environment.

1 Like

But no zooming option in the viewer yet, correct?
Edit: The relevant issue is:
https://github.com/jheinen/GR.jl/issues/40

@jonathanBieler There is discussion about stacking and inset plots in Gadfly here:
https://github.com/GiovineItalia/Gadfly.jl/issues/1169
Please add any suggestions!

Thank you, I will ask them to try it again. They have the problem on their private laptops (we provide linux machines they could use instead during class), so I have neither control nor can really debug this.

I started with PyPlot, but switched to PGFPlotsX quite some time ago, because I found it easier to produce nice publication/presentation-ready plots. Now I use it almost exclusively and love its stability, the fantastic manual/documentation and its versatility (there is almost nothing you can’t do with it). I’m almost never bothered by the negative sides, which are that it may take a bit of time to render heavy plots and you only get the interactivity that your svg/pdf viewer allows. For interactivity I also like PlotlyJS.

1 Like

I found that 99% of the time PGFPlotsX is slow I am overplotting and would be better served with a different kind of plot. That said, up to 10k points I am usually fine, and that is already way too much on a plot.

Adding hexagonal bins in the form of a general Julia package that other packages can also use is on my (countably infinite) TODO list.

4 Likes

I’d say all the discussion above proves my point nicely.

1 Like

I totally agree; PGFPlotsX isn’t slow for any reasonable plot I tried to produce so far. Sometimes I just try to plot too many points, when I am too lazy to preprocess data that would anyway be indistinguishable in the figure…

Hexagonal binning looks interesting.

1 Like

You can expect pan/zoom in the next GR release, hopefully in January …
gks

14 Likes

Sounds promising! So I will give it a try for my new KiteViewer.jl project!

Hi @jleman,

I would (of course) personally suggest you take a look at my own package: InspectDR.

Some sample plots

You can find the sample code to generate “Sample plots” in this directory:

You can even build “applets” using Blink/Electron (uses Google Chrome somehow):

…And you might appreciate that it was designed to generate annotated Bode Plots where the x-axes of the Mag & Phase values are tied together (same frequency axis as you pan/zoom into the plot):

Basic Info

The InspectDR package was developed with the intent of interactively examining the results of circuit simulation in the time domain.

  • Designed to be fast (both to load, and to plot).
  • Designed to deal with datasets > 1GB.
  • Designed for publication-quality ouptut (and readable design reviews).
  • Designed so you can interactively add markers to overlay delta/slope measurements directly on the plot.
  • Designed so you can interactively add H/V markers for annotation purposes.

Some issues:

  • You can only use InspectDR for your 2D line/scatter plot needs. You will need another package to do 3D/mesh plots.
  • InspectDR plots require a moderate amount of code to generate plots. It is mostly designed to be used from a “plotting script”.
  • If you wish to use InspectDR from the command line for interactive purposes, I suggest using it through the Plots.jl module. Plots.jl takes more time to load than InspectDR.jl by itself, but is significantly easier to use from the command line (REPL).

Other interesting tools for network analysis

I have also started developing tools that help manipulate network parameters & conversions between S, T , ABCD, G, H, Y, and Z:

It is part of a larger toolset called CData:

CData is library of tools to deal with things like parametric analyses (where you vary process corner, voltage, temperature, etc…) if that is something that you might need.

CData will allow you to run vectorized calculations on all of the corners simulataneously (and even plot all the corners simultaneously).

There are instructions on how to install these packages, but I have not released them to Julia’s “metadata” library - as I have with InspectDR.

4 Likes

Another good option is using RCall.jl + ggplot2.

When need to generate descent plot, I will still use R. ggplot2 is capable of making all kinds of plots and it also has tons of examples and tutorials. The plots generated by ggplot2 is perfect to reports or journal papers.

2 Likes

Thank you for the detailed reply. I will give it a try.

Also, though a bit off topic: if you need to read in your simulated data from binary SPICE or PSF files, you can try:

#SPICE data reader:
julia> ] add SpiceData

#PSF data reader:
julia> ] add LibPSF

(They are also re-exported by CData using a slightly nicer interface/data structures, but you can use them directly if you wish)

1 Like

Setting the GKS_NO_GUI environment to what?

as in ENV[“GKS_NO_GUI”] = ???

:heart_eyes: Wow, yes please!!!

1 Like

Isn’t that implemented somewhere already? Maybe in Plots.jl?

https://github.com/RalphAS/HexBinPlots.jl

1 Like

GR at least supports it

Thanks, the calculations appear to be in

https://github.com/GiovineItalia/Hexagons.jl

which I could use directly.

Still, ATM I have little time for this, but in the medium run I am planning to do it.

1 Like