# State of PlotlyJS and support packages

**URL:** <https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119>\
**Category:** Visualization\
**Tags:** plotlyjs\
**Created:** [August 22, 2022, 6:16am UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119 "2022-08-22T06:16:13Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![mzaffalon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mzaffalon/32/214168_2.png) [@mzaffalon](https://discourse.julialang.org/u/mzaffalon)\
**Post date:** [August 22, 2022, 6:16am UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/1 "2022-08-22T06:16:13Z")

</div>

[PlotlyJS](https://github.com/JuliaPlots/PlotlyJS.jl) seems to be unmaintained by its current (and only) maintainer @sglyon. It also relies on [Blink.jl](https://github.com/JuliaGizmos/Blink.jl), a wrapper for [Electron](https://www.electronjs.org/), where the last commit was more than one year ago and uses a version of Electron more than 2 years old. Installing Blink [fails](https://github.com/JuliaPlots/PlotlyJS.jl/issues/438) because it makes use of BinDeps, which, as far as I understand, has been abandoned.

If the original project is not maintained anymore by @sglyon, how do we proceed?

---

<div class="post-metadata">

**Author:** ![BeastyBlacksmith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/beastyblacksmith/32/4741_2.png) [@BeastyBlacksmith](https://discourse.julialang.org/u/BeastyBlacksmith)\
**Post date:** [August 22, 2022, 9:52am UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/2 "2022-08-22T09:52:13Z")

</div>

PlotlyJS is part of the JuliaPlots organization and thus you can ping members of that organisation to have a look at your favourite open PR or leave a message in the `plotting` channel of either Slack or Zulip.

---

<div class="post-metadata">

**Author:** ![Raf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raf/32/3383_2.png) [@Raf](https://discourse.julialang.org/u/Raf)\
**Post date:** [August 22, 2022, 10:11am UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/3 "2022-08-22T10:11:50Z")

</div>

The problem isn’t so much JuliaPlots but Blink.jl and JuliaGizmos being very light on maintenance time these days.

But for how to proceed: we need a [BinaryBuilder.jl](https://github.com/JuliaPackaging/BinaryBuilder.jl) generated Electron\_jll to replace the use of BinDeps in Blink.jl.

@mzaffalon if you want to contribute to fixing this problem, making Electron\_jll a thing would be an amazing help to the ecosystem.

Ok I see this is already in progress, but possibly stalled? @ianshmean any comments on this?

[https://github.com/JuliaPackaging/Yggdrasil/pull/4946](https://github.com/JuliaPackaging/Yggdrasil/pull/4946)  
[https://github.com/JuliaPackaging/Yggdrasil/pull/117](https://github.com/JuliaPackaging/Yggdrasil/pull/117)

---

<div class="post-metadata">

**Author:** ![VivMendes](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vivmendes/32/16477_2.png) [@VivMendes](https://discourse.julialang.org/u/VivMendes)\
**Post date:** [August 22, 2022, 10:28pm UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/4 "2022-08-22T22:28:17Z")

</div>

In my humble opinion, PlotlyJS is a remarkable piece of software. I taught two macroeconomic courses in the previous academic year (the undergrad course [here](https://www.sites.google.com/iscte-iul.pt/macroeconomics-0271/home) and a master’s [here](https://www.sites.google.com/iscte-iul.pt/macroeconomics-m8674/home)) using the reactivity of Pluto and the interactivity of PlotlyJS, to students who had never had one hour of computation before. Last year, the course involved around 200 students, and I plan to use it again this year (around 300 students).

In particular, the undergrad students were thrilled about the experience of opening a notebook, plotting data, hovering over small details in a plot (using either x or y modes), zooming in/out, and so on. I was expecting trouble here, as I had never taught this kind of material to undergrads in economics. Instead, I got students fascinated by what a simple computer, a marvelous programming language, and no more than 20 packages can do for them. I am pretty sure that the kind of teaching materials the students had access to would not have been available without PlotlyJS. I should also thank @disberd for providing a workaround to make PlotlyJS a perfect match for Pluto [here](https://discourse.julialang.org/t/pluto-plots-with-plotlybase-plotlyjs-with-working-static-html-export/61730) and [here](https://github.com/JuliaPluto/PlutoPlotly.jl). I must confess that I tried four other plotting packages, but for the kind of teaching materials I was looking for, PlotlyJS was far more competent and versatile than the others.

So, I will be highly disappointed if PlotlyJS is pushed gradually into the department of abandonware. If that happens, I think the Julia community will also be affected somehow, either because many use the plotlyjs backend in Plots.jl to benefit from the interactivity the package allows or because they have a particular job to do (like me) in which PlotlyJS excels.

I hope @sglyon can find some spare time to allocate to the maintenance of his marvelous piece of software or that @disberd will find a way to develop the PlutoPlotly.jl package further. I can not be of much help, as my programming skills are mediocre. As a user, I must do justice to what we can achieve with a fantastic plotting package in the Julia system: PlotlyJS.

---

<div class="post-metadata">

**Author:** ![jd-foster](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jd-foster/32/35824_2.png) [@jd-foster](https://discourse.julialang.org/u/jd-foster)\
**Post date:** [August 23, 2022, 7:38am UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/5 "2022-08-23T07:38:14Z")

</div>

Seems like an issue here is blocking the build at the moment:  
[https://github.com/JuliaPackaging/Yggdrasil/pull/5005#issuecomment-1151520593](https://github.com/JuliaPackaging/Yggdrasil/pull/5005#issuecomment-1151520593)

---

<div class="post-metadata">

**Author:** ![stephancb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stephancb/32/14243_2.png) [@stephancb](https://discourse.julialang.org/u/stephancb)\
**Post date:** [August 24, 2022, 8:10am UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/6 "2022-08-24T08:10:07Z")

</div>

PlotlyJS works alternatively with [ElectronDisplay](https://github.com/queryverse/ElectronDisplay.jl), which is independent of [Blink](https://github.com/JuliaGizmos/Blink.jl) and seems to use a newer version of Electron than Blink.

For Blink an update of Electron fails because of this [issue](https://stackoverflow.com/questions/55093700/electron-5-0-0-uncaught-referenceerror-require-is-not-defined), i.e. the JS code in Blink needs adjustments. I’ll file this as an issue also at Blink.

---

<div class="post-metadata">

**Author:** ![mzaffalon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mzaffalon/32/214168_2.png) [@mzaffalon](https://discourse.julialang.org/u/mzaffalon)\
**Post date:** [August 24, 2022, 6:43pm UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/7 "2022-08-24T18:43:08Z")

</div>

Are you suggesting to abandon Blink in favour of ElectronDisplay so as not to having to maintain two distinct packages?

> PlotlyJS works alternatively with [ElectronDisplay](https://github.com/queryverse/ElectronDisplay.jl)

Can you explain how?

---

<div class="post-metadata">

**Author:** ![stephancb](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stephancb/32/14243_2.png) [@stephancb](https://discourse.julialang.org/u/stephancb)\
**Post date:** [August 24, 2022, 7:28pm UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/8 "2022-08-24T19:28:42Z")

</div>

```julia
julia> using PlotlyJS,ElectronDisplay

julia> x=0:π/56:2π; plot(scatter(;x=x, y=cos.(x)), Layout(;xaxis_title="x", yaxis_title="cos(x)"))

```

pops up a new window

 ![ElectronDisplay](https://global.discourse-cdn.com/julialang/original/3X/e/b/eb428e139a14414d5f028123c35700288a0ee2a3.png)

Subsequent plots will be added to the same window. Other than this I’m not aware of differences between Blink and ElectronDisplay as a display for PlotlyJS, hovering, zooming etc work also in ElectronDisplay.

Blink might be used for other things than PlotlyJS as well, but as far as it concerns users of PlotlyJS one could rather focus on maintaining ElectronDisplay instead of Blink. The PlotlyJS [docs](http://juliaplots.org/PlotlyJS.jl/stable/syncplots/) mention only Blink.jl. ElectronDisplay.jl should be added or replace Blink.jl.

---

<div class="post-metadata">

**Author:** ![jd-foster](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jd-foster/32/35824_2.png) [@jd-foster](https://discourse.julialang.org/u/jd-foster)\
**Post date:** [August 24, 2022, 11:53pm UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/9 "2022-08-24T23:53:21Z")

</div>

Thanks for sharing this, looks like a very useful package.  
I think the direct comparison to Blink.jl is [Electron.jl](https://github.com/davidanthoff/Electron.jl), while ElectronDisplay.jl would substitute for display functionality in PlotlyJS.jl itself.

---

<div class="post-metadata">

**Author:** ![phyxmeow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/phyxmeow/32/36373_2.png) [@phyxmeow](https://discourse.julialang.org/u/phyxmeow)\
**Post date:** [October 14, 2022, 1:15pm UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/10 "2022-10-14T13:15:57Z")

</div>

Does this get any updates? I used to use PlotlyJS and Pluto together, but now they are not compatible, due to Blink.jl dep.

---

<div class="post-metadata">

**Author:** ![qsong](https://avatars.discourse-cdn.com/v4/letter/q/d07c76/32.png) [@qsong](https://discourse.julialang.org/u/qsong)\
**Post date:** [October 15, 2022, 3:51am UTC](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/11 "2022-10-15T03:51:12Z")

</div>

You may try another package [PlotlyLight](https://github.com/JuliaComputing/PlotlyLight.jl), which works well in my use case. It uses the Plotly.js directly, so basically no external dependencies.
