# InteractiveViz - an interactive visualization toolkit for large datasets

**URL:** <https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878>\
**Category:** Package Announcements\
**Tags:** plotting\
**Created:** [June 6, 2020, 2:33pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878 "2020-06-06T14:33:24Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![mchitre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mchitre/32/13756_2.png) [@mchitre](https://discourse.julialang.org/u/mchitre)\
**Post date:** [June 6, 2020, 2:33pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/1 "2020-06-06T14:33:24Z")

</div>

Announcing [InteractiveViz](https://github.com/org-arl/InteractiveViz.jl), an interactive visualization toolkit for working with large (even infinite) datasets.

Julia already has a rich set of plotting tools in the form of the _Plots_ and _Makie_ ecosystems, and various backends for these. _InteractiveViz_ is **not** a replacement for _Plots_ or _Makie_ , but rather a graphics pipeline system developed on top of _Makie_ with specific use cases in mind:

- Interactively explore scatter plots or timeseries plots with tens of millions of data points.
- Provide perceptually accurate summaries at large scale, allowing drill down to individual data points.
- Allow generation of data points on demand through a graphics pipeline (e.g. infinite zoom into a fractal generated on demand), requiring computation only at a level of detail appropriate for display at the viewing resolution. Additional data points can be generated on demand when zooming or panning.

This package was partly inspired by the excellent [Datashader](https://datashader.org/) package available in the Python ecosystem.

This package does not aim to provide comprehensive production quality plotting. It is aimed at interactive exploration of large datasets.

The package was developed primarily due to my own research use cases, and generalized to make it useful for the community. Feedback and contributions most welcome.

---

<div class="post-metadata">

**Author:** ![terasakisatoshi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/terasakisatoshi/32/9187_2.png) [@terasakisatoshi](https://discourse.julialang.org/u/terasakisatoshi)\
**Post date:** [June 6, 2020, 2:40pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/2 "2020-06-06T14:40:58Z")

</div>

Great!

mandelbrot works on my Mac 👍

---

<div class="post-metadata">

**Author:** ![laborg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/laborg/32/5474_2.png) [@laborg](https://discourse.julialang.org/u/laborg)\
**Post date:** [June 6, 2020, 2:51pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/3 "2020-06-06T14:51:38Z")

</div>

I missed something like this for a long time! Will there be a way to hook into the machinery with custom types as the source for the plot?

Thanks for your work!

---

<div class="post-metadata">

**Author:** ![mchitre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mchitre/32/13756_2.png) [@mchitre](https://discourse.julialang.org/u/mchitre)\
**Post date:** [June 6, 2020, 2:55pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/4 "2020-06-06T14:55:21Z")

</div>

Yes, you can provide your own data source – simply a function that generates the data on demand. See [demo source](https://github.com/org-arl/InteractiveViz.jl/blob/master/src/demo.jl) for an example. If you have specific API ideas on how you’d like your data types to be hooked in, I’d be glad to discuss those.

---

<div class="post-metadata">

**Author:** ![oschulz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oschulz/32/2998_2.png) [@oschulz](https://discourse.julialang.org/u/oschulz)\
**Post date:** [June 6, 2020, 5:12pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/5 "2020-06-06T17:12:11Z")

</div>

Wow very nice!

Btw. GR plots does have a datashader for scatter plots - it even has part of it’s code cross-compiled to run in the browser, so they are interactive in HTML displays. Unfortunately, this is currently only available via GR.jl directly - the design of Plots.jl makes it hard to support it for the GR backend (though it may be possible, in principle).

CC @jheinen

---

<div class="post-metadata">

**Author:** ![oschulz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oschulz/32/2998_2.png) [@oschulz](https://discourse.julialang.org/u/oschulz)\
**Post date:** [June 6, 2020, 5:36pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/6 "2020-06-06T17:36:31Z")

</div>

Just tried the awesome Mandelbrot demo, and was wondering: Since the rendering is done on my GPU already, is there a way to tell InteractiveViz to use a `CuArray` to make the Mandelbrot computation run on my GPU as well? I think zooming it would be pretty much real-time, then. 🙂

---

<div class="post-metadata">

**Author:** ![mchitre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mchitre/32/13756_2.png) [@mchitre](https://discourse.julialang.org/u/mchitre)\
**Post date:** [June 6, 2020, 6:09pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/7 "2020-06-06T18:09:10Z")

</div>

Hmmm… interesting idea. It should be possible. I, unfortunately, don’t have a CUDA compatible GPU on my machine to test this with, but when I get a chance, I’ll prototype this to try…

Alternatively, I’m open to a PR which does this too 😛

---

<div class="post-metadata">

**Author:** ![oschulz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oschulz/32/2998_2.png) [@oschulz](https://discourse.julialang.org/u/oschulz)\
**Post date:** [June 6, 2020, 6:11pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/8 "2020-06-06T18:11:51Z")

</div>

Hm, maybe I’ll give it a try! 🙂

Speaking of Mandelbrot sets - I just used InteractiveViz to render a Julia set, and was wondering - do we have an “official” Julia set for Julia yet?

---

<div class="post-metadata">

**Author:** ![mchitre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mchitre/32/13756_2.png) [@mchitre](https://discourse.julialang.org/u/mchitre)\
**Post date:** [June 6, 2020, 6:14pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/9 "2020-06-06T18:14:05Z")

</div>

Oh, how did it not occur to me that the Julia set was the perfect one to include as a demo! 😃

Must add it in!

---

<div class="post-metadata">

**Author:** ![asinghvi17](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asinghvi17/32/8272_2.png) [@asinghvi17](https://discourse.julialang.org/u/asinghvi17)\
**Post date:** [June 7, 2020, 10:27am UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/10 "2020-06-07T10:27:52Z")

</div>

Wow, this looks really cool! You should look out for the “text in pixelspace” PR to AbstractPlotting, coming soon. Also, have you seen [MakieLayout](https://github.com/jkrumbiegel/MakieLayout.jl)? It implements layouting and is pretty flexible with what you can lay out, and it might be interesting to integrate that with InteractiveViz - especially so that you can use InteractiveViz as part of a larger plotting pipeline.

Please let us know if you have any feature requests for Makie, or if you run into any bugs!

---

<div class="post-metadata">

**Author:** ![mchitre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mchitre/32/13756_2.png) [@mchitre](https://discourse.julialang.org/u/mchitre)\
**Post date:** [June 7, 2020, 1:04pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/11 "2020-06-07T13:04:18Z")

</div>

Thanks for the feedback and suggestions. Will certainly take a look at both, and coordinate more closely with the Makie development as the pipeline API matures.

---

<div class="post-metadata">

**Author:** ![Gunter\_Faes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunter_faes/32/12580_2.png) [@Gunter\_Faes](https://discourse.julialang.org/u/Gunter_Faes)\
**Post date:** [June 8, 2020, 7:24am UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/12 "2020-06-08T07:24:20Z")

</div>

Thank you for this package and I assume it is very helpful. But is it (not yet) possible to use it in the Juno environment? I got this message:

> (@v1.4) pkg\> add InteractiveViz  
> Updating registry at `C:\Users\guent\.juliapro\JuliaPro_v1.4.1-1\registries\JuliaPro`  
> ERROR: The following package names could not be resolved:
> 
> - InteractiveViz (not found in project, manifest or registry)

I suppose I’m a little too impatient… 😉

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [June 8, 2020, 8:25am UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/13 "2020-06-08T08:25:42Z")

</div>

Try calling `]up` beforehand, you might not have the latest registry?

---

<div class="post-metadata">

**Author:** ![asinghvi17](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asinghvi17/32/8272_2.png) [@asinghvi17](https://discourse.julialang.org/u/asinghvi17)\
**Post date:** [June 8, 2020, 8:28am UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/14 "2020-06-08T08:28:38Z")

</div>

The JuliaPro registry lags behind General, so InteractiveViz won’t have propagated there yet. You could add by URL:

```julia
]add https://github.com/org-arl/InteractiveViz.jl

```

---

<div class="post-metadata">

**Author:** ![Gunter\_Faes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunter_faes/32/12580_2.png) [@Gunter\_Faes](https://discourse.julialang.org/u/Gunter_Faes)\
**Post date:** [June 8, 2020, 11:30am UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/15 "2020-06-08T11:30:24Z")

</div>

> [@asinghvi17](#):
>
> The JuliaPro registry lags behind General, so InteractiveViz won’t have propagated there yet. You could add by URL:

I suppose so! And thanks for the advice! I had used the direct link in the past for other packages, but unfortunately I “forgot” this way! Oh dear, what is wrong with my memory…!? 😌 👍

Update:  
I have updated my Julia-Juno-version and then started the download via the link. And now I get some error messages:

```julia
(@v1.4) pkg> add https://github.com/org-arl/InteractiveViz.jl
   Updating git-repo `https://github.com/org-arl/InteractiveViz.jl`
  Resolving package versions...
ERROR: Unsatisfiable requirements detected for package GLM [38e38edf]:
 GLM [38e38edf] log:
 ├─possible versions are: [1.0.0-1.0.2, 1.1.0-1.1.1, 1.2.0, 1.3.0-1.3.9] or uninstalled
 ├─restricted to versions * by an explicit requirement, leaving only versions [1.0.0-1.0.2, 1.1.0-1.1.1, 1.2.0, 1.3.0-1.3.9]
 ├─restricted by compatibility requirements with StatsMakie [65254759] to versions: 1.3.0-1.3.9
 │ └─StatsMakie [65254759] log:
 │ ├─possible versions are: [0.0.1-0.0.7, 0.1.0-0.1.5, 0.2.0-0.2.2] or uninstalled
 │ └─restricted by compatibility requirements with Makie [ee78f7c6] to versions: [0.1.4-0.1.5, 0.2.0-0.2.2]
 │ └─Makie [ee78f7c6] log:

```

I think I’ll have to wait a little longer until the package is made available regularly via JuliaPro. Thanks again for your advice!

---

<div class="post-metadata">

**Author:** ![marianoarnaiz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marianoarnaiz/32/19377_2.png) [@marianoarnaiz](https://discourse.julialang.org/u/marianoarnaiz)\
**Post date:** [February 13, 2023, 9:47pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/16 "2023-02-13T21:47:17Z")

</div>

> [@mchitre](#):
>
> demo source

I am loving this project. I am working with very large 2D datasets that I need to map and this is the only way to visualize them. Any way to add a colorbar, a title and to save the plot to a figure?

---

<div class="post-metadata">

**Author:** ![mchitre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mchitre/32/13756_2.png) [@mchitre](https://discourse.julialang.org/u/mchitre)\
**Post date:** [February 14, 2023, 12:59am UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/17 "2023-02-14T00:59:56Z")

</div>

Yes. Makie has advanced quite a bit since this package was originally developed. I intend to use Makie for layout, and also add color-bar, title, etc, but haven’t found time recently to do it. Sometime soon…

---

<div class="post-metadata">

**Author:** ![marianoarnaiz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marianoarnaiz/32/19377_2.png) [@marianoarnaiz](https://discourse.julialang.org/u/marianoarnaiz)\
**Post date:** [February 14, 2023, 10:22am UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/18 "2023-02-14T10:22:44Z")

</div>

Is there a way to add the colorbar and other things from Makie? Like together.  
It is just that your package is the only one that seems to handle my data hahah

---

<div class="post-metadata">

**Author:** ![marianoarnaiz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marianoarnaiz/32/19377_2.png) [@marianoarnaiz](https://discourse.julialang.org/u/marianoarnaiz)\
**Post date:** [February 14, 2023, 2:06pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/19 "2023-02-14T14:06:21Z")

</div>

Also, it there a way to make the window a bit larger and to safe the plot?  
Sorry for all the questions 🙂

---

<div class="post-metadata">

**Author:** ![mchitre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mchitre/32/13756_2.png) [@mchitre](https://discourse.julialang.org/u/mchitre)\
**Post date:** [February 16, 2023, 3:09pm UTC](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878/20 "2023-02-16T15:09:10Z")

</div>

There should eventually be a nicer way to do this when I rework everything to work with `MakieLayout`, but this might work as a hack for now.

To resize current window to (2000, 1000):

```julia
let scene = ifigure(hold=true).scene
    resize!(scene, (2000, 1000))
    display(scene)
end

```

This works to add a colorbar:

```julia
Colorbar(ifigure(hold=true).scene; height=500, width=100, valign=:bottom, halign=:left)

```

but I haven’t figured out how to place it where you want yet.

[Next page](https://discourse.julialang.org/t/interactiveviz-an-interactive-visualization-toolkit-for-large-datasets/40878.md?page=2)
