# State of Plotting Packages as of 2018/12/15

**URL:** <https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698>\
**Category:** New to Julia\
**Tags:** plotting, packages\
**Created:** [December 15, 2018, 7:58pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698 "2018-12-15T19:58:25Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![jheinen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jheinen/32/2787_2.png) [@jheinen](https://discourse.julialang.org/u/jheinen)\
**Post date:** [December 16, 2018, 10:10am UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/21 "2018-12-16T10:10:43Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [December 16, 2018, 10:29am UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/22 "2018-12-16T10:29:54Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Mattriks](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mattriks/32/351_2.png) [@Mattriks](https://discourse.julialang.org/u/Mattriks)\
**Post date:** [December 16, 2018, 11:26am UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/23 "2018-12-16T11:26:43Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![ckoe-bccms](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ckoe-bccms/32/1816_2.png) [@ckoe-bccms](https://discourse.julialang.org/u/ckoe-bccms)\
**Post date:** [December 16, 2018, 12:19pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/24 "2018-12-16T12:19:57Z")

</div>

> [@jheinen](#):
>
> 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.

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.

---

<div class="post-metadata">

**Author:** ![jbrea](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jbrea/32/3879_2.png) [@jbrea](https://discourse.julialang.org/u/jbrea)\
**Post date:** [December 16, 2018, 2:04pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/25 "2018-12-16T14:04:42Z")

</div>

I started with PyPlot, but switched to [PGFPlotsX](https://github.com/KristofferC/PGFPlotsX.jl) 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](https://github.com/sglyon/PlotlyJS.jl).

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [December 16, 2018, 2:12pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/26 "2018-12-16T14:12:52Z")

</div>

> [@jbrea](#):
>
> it may take a bit of time to render heavy plots

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](https://cran.r-project.org/web/packages/hexbin/vignettes/hexagon_binning.pdf) in the form of a general Julia package that other packages can also use is on my (countably infinite) TODO list.

---

<div class="post-metadata">

**Author:** ![mkborregaard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkborregaard/32/556_2.png) [@mkborregaard](https://discourse.julialang.org/u/mkborregaard)\
**Post date:** [December 16, 2018, 4:37pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/27 "2018-12-16T16:37:25Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![jbrea](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jbrea/32/3879_2.png) [@jbrea](https://discourse.julialang.org/u/jbrea)\
**Post date:** [December 16, 2018, 4:42pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/28 "2018-12-16T16:42:00Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![jheinen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jheinen/32/2787_2.png) [@jheinen](https://discourse.julialang.org/u/jheinen)\
**Post date:** [December 16, 2018, 5:32pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/29 "2018-12-16T17:32:59Z")

</div>

You can expect pan/zoom in the next GR release, hopefully in January …  
 ![gks](https://global.discourse-cdn.com/julialang/original/3X/1/0/10e6bcba6e56fecb19f86b08091f01080b1dfea9.gif)

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [December 16, 2018, 6:35pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/30 "2018-12-16T18:35:41Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![MA\_Laforge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ma_laforge/32/385_2.png) [@MA\_Laforge](https://discourse.julialang.org/u/MA_Laforge)\
**Post date:** [December 18, 2018, 2:12am UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/31 "2018-12-18T02:12:44Z")

</div>

Hi @jleman,

I would (of course) personally suggest you take a look at my own package: [InspectDR](https://github.com/ma-laforge/InspectDR.jl).

### Some sample plots

- [📈 Sample plots](https://github.com/ma-laforge/FileRepo/tree/master/InspectDR/sampleplots/README.md) (might be out of date).
- [📈 CData.jl output](https://github.com/ma-laforge/FileRepo/tree/master/SignalProcessing/sampleplots/README.md).

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

- [InspectDR.jl/sample at master · ma-laforge/InspectDR.jl · GitHub](https://github.com/ma-laforge/InspectDR.jl/tree/master/sample)

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

- [InspectDR.jl/Blink at master · ma-laforge/InspectDR.jl · GitHub](https://github.com/ma-laforge/InspectDR.jl/tree/master/Blink)
- Description: [MA Laforge Web - Design Assistants](https://sites.google.com/site/malaforgeweb/design-assist)

…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):

 ![image](https://global.discourse-cdn.com/julialang/original/3X/5/e/5eb8fb0c221f7b1d3173393a9f3296bdcbca5677.png)

### 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:

- [https://github.com/ma-laforge/NetwAnalysis.jl](https://github.com/ma-laforge/NetwAnalysis.jl)

It is part of a larger toolset called CData:

- [GitHub - ma-laforge/CData.jl: C-Data Parametric Analysis/Visualization Suite](https://github.com/ma-laforge/CData.jl)

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.

---

<div class="post-metadata">

**Author:** ![Lanfeng](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lanfeng/32/76_2.png) [@Lanfeng](https://discourse.julialang.org/u/Lanfeng)\
**Post date:** [December 18, 2018, 7:03am UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/32 "2018-12-18T07:03:19Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![jleman](https://avatars.discourse-cdn.com/v4/letter/j/df788c/32.png) [@jleman](https://discourse.julialang.org/u/jleman)\
**Post date:** [December 19, 2018, 5:28am UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/33 "2018-12-19T05:28:02Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![MA\_Laforge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ma_laforge/32/385_2.png) [@MA\_Laforge](https://discourse.julialang.org/u/MA_Laforge)\
**Post date:** [December 22, 2018, 2:09am UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/34 "2018-12-22T02:09:54Z")

</div>

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

```julia
#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)

---

<div class="post-metadata">

**Author:** ![lewis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lewis/32/5217_2.png) [@lewis](https://discourse.julialang.org/u/lewis)\
**Post date:** [June 8, 2019, 4:21pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/35 "2019-06-08T16:21:43Z")

</div>

Setting the GKS\_NO\_GUI environment to what?

as in ENV[“GKS\_NO\_GUI”] = ???

---

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [June 8, 2019, 6:53pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/36 "2019-06-08T18:53:27Z")

</div>

> [@Tamas\_Papp](#):
>
> Adding [hexagonal bins](https://cran.r-project.org/web/packages/hexbin/vignettes/hexagon_binning.pdf) in the form of a general Julia package that other packages can also use is on my (countably infinite) TODO list.

😍 Wow, yes please!!!

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [June 8, 2019, 7:06pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/37 "2019-06-08T19:06:41Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)\
**Post date:** [June 8, 2019, 7:08pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/38 "2019-06-08T19:08:16Z")

</div>

[https://github.com/RalphAS/HexBinPlots.jl](https://github.com/RalphAS/HexBinPlots.jl)

---

<div class="post-metadata">

**Author:** ![mkborregaard](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkborregaard/32/556_2.png) [@mkborregaard](https://discourse.julialang.org/u/mkborregaard)\
**Post date:** [June 8, 2019, 7:35pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/39 "2019-06-08T19:35:41Z")

</div>

GR at least supports it

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [June 10, 2019, 5:22pm UTC](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698/40 "2019-06-10T17:22:36Z")

</div>

Thanks, the calculations appear to be in

[https://github.com/GiovineItalia/Hexagons.jl](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.

[Previous page](https://discourse.julialang.org/t/state-of-plotting-packages-as-of-2018-12-15/18698.md?page=1)
