ANN: New interactive Plots.jl backend for large datasets

About InspectDR.jl

Fast plotting with a responsive GUI (optional). Target: Quickly identify design/simulation issues & glitches in order to shorten design iterations.

Pros

  • Relatively short load times / time to first plot.
  • Interactive mouse/keybindings.
  • Fast & simple way to pan/zoom into data.
  • Designed with larger datasets in mind.
  • Responsive even with moderate (>200k points) datasets.
  • Confirmed to handle 2GB datsets with reasonable speed on older desktop running Windows 7 (Just don’t try to drag+pan the data area).

Cons

  • Mostly limited to 2D line/scatter plots.
  • No support for @layout or grid at the moment.

Mouse/Keybindings

An integral part of the interactivity:

Optimized for functions of 1 argument:

y[i] = f(x[i]), where x[i] < x[i+1]

For example:

  • Time-domain data (y(x=time))
  • Frequency-domain data (y = X(x=ω))

Links

8 Likes

Sounds interesting. Will it be added to the backends page?

https://juliaplots.github.io/backends/

Sounds interesting. Will it be added to the backends page?

Also: Currently on Plots.jl master, pending METADATA PR for v0.10.3.

2 Likes

Sample Usage

using Plots
inspectdr()

#npts = div(1_000_000_000, sizeof(Float64)) #test: 1 GB of Float64
npts = 200_000
T=.01e-6
x = collect(linspace(0, 1e-6, npts))
y = sin(2pi*(x./T))

plot(x, y)

Sounds nice. What does DR mean?

I just merged and built the docs… it’s in there now.

The Plots 0.10.3 tag still hasn’t been merged into METADATA, so you’ll have to checkout master if you want this functionality soon.

@dpsanders: Sounds nice. What does DR mean?

The primary goal of the package is to investigate simulation results in an interactive fashion.

A secondary goal was to generate legible, pleasant-looking plots adequate for publications and “Design Reviews” (akin to code reviews).

To keep the name succinct (instead of going with InvestigateAndDesignReview), I chose “InspectDR”.

4 Likes

@MA_Laforge, just learned now about your great InspectDR.jl backend for Plots. It is so easy to use:

using Plots; inspectdr()

and it allows plotting hundreds of thousands of points and zoom them interactively, where most backends struggle!
Thank you so much.

5 Likes