# PlotlyJS users poll

**URL:** <https://discourse.julialang.org/t/plotlyjs-users-poll/89576>\
**Category:** Visualization\
**Tags:** plotting\
**Created:** [October 31, 2022, 5:47pm UTC](https://discourse.julialang.org/t/plotlyjs-users-poll/89576 "2022-10-31T17:47:31Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![halleysfifthinc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/halleysfifthinc/32/206280_2.png) [@halleysfifthinc](https://discourse.julialang.org/u/halleysfifthinc)\
**Post date:** [October 31, 2022, 5:47pm UTC](https://discourse.julialang.org/t/plotlyjs-users-poll/89576/1 "2022-10-31T17:47:31Z")

</div>

I just opened a PR to remove support/dependency on Blink that I expect will be controversial, check it out for more [details](https://github.com/JuliaPlots/PlotlyJS.jl/pull/451). There are some good reasons to remove the dependency on Blink, but I recognize that my workflow of exclusively plotting in Jupyter may not be the norm.

(I also use PlotlyJS directly and not through Plots.jl. I don’t know if/how that has bearing on this discussion.)

# How do you use/view your plots from PlotlyJS?

_Poll ([view on site](https://discourse.julialang.org/t/plotlyjs-users-poll/89576/1))_

---

<div class="post-metadata">

**Author:** ![cjdoris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cjdoris/32/213133_2.png) [@cjdoris](https://discourse.julialang.org/u/cjdoris)\
**Post date:** [October 31, 2022, 6:16pm UTC](https://discourse.julialang.org/t/plotlyjs-users-poll/89576/2 "2022-10-31T18:16:06Z")

</div>

Not an answer to your question, but over in [Bokeh.jl](https://github.com/cjdoris/Bokeh.jl) we only support basic rendering to HTML or the browser and a separate package [BokehBlink.jl](https://github.com/cjdoris/Bokeh.jl/tree/main/BokehBlink) provides the option to render with Blink. I think it works very nicely.

---

<div class="post-metadata">

**Author:** ![Oto\_Brzobohaty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oto_brzobohaty/32/10370_2.png) [@Oto\_Brzobohaty](https://discourse.julialang.org/u/Oto_Brzobohaty)\
**Post date:** [October 31, 2022, 6:51pm UTC](https://discourse.julialang.org/t/plotlyjs-users-poll/89576/3 "2022-10-31T18:51:21Z")

</div>

Hi,

I use plotly mainly in the VS Code plot pane. Not sure if blink is needed for this.

---

<div class="post-metadata">

**Author:** ![robsmith11](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/robsmith11/32/29641_2.png) [@robsmith11](https://discourse.julialang.org/u/robsmith11)\
**Post date:** [November 1, 2022, 2:27am UTC](https://discourse.julialang.org/t/plotlyjs-users-poll/89576/4 "2022-11-01T02:27:52Z")

</div>

Neither, I always use `savefig` and open the local file with Firefox.

I also have a convenience function the uses `sed` on the resulting html to redirect the external javascript files to local copies, so that I can use it offline.

---

<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:** [November 1, 2022, 5:04am UTC](https://discourse.julialang.org/t/plotlyjs-users-poll/89576/5 "2022-11-01T05:04:38Z")

</div>

I use PlotlyJS directly in the REPL but plot to [ElectronDisplay](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119/8), not Blink. Still, the PlotlyJS package has a dependency on Blink. I have not tested whether this could removed and not compared the loading times of `using ElectronDisplay` vs `using Blink`.

---

<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:** [November 1, 2022, 10:54am UTC](https://discourse.julialang.org/t/plotlyjs-users-poll/89576/6 "2022-11-01T10:54:43Z")

</div>

Note the reasonably old but still open issue in PlotlyJS.jl here:

> <https://github.com/JuliaPlots/PlotlyJS.jl/issues/272>
>
> Hi @sglyon 👋 
> 
> I raised this issue once here
> 
> https://github.com/sglyon/Plot…lyJS.jl/issues/184
> 
> but would like to raise it again.
> 
> Blink.jl is kind of a heavy dependency with a nontrivial build process. I don't think it is really necessary for what I think you want with PlotlyJS.jl.
> 
> Would you be open to using \[Requires.jl\](https://github.com/MikeInnes/Requires.jl) and have some code that only gets loaded if someone has independently loaded Blink.jl?
> 
> This way, you would not lose any Blink functionality, but Blink would not be a dependency.
> 
> When I raised this issue before, it was for my package, \[Pages.jl\](https://github.com/EricForgy/Pages.jl), and we were able to close the issue because it turns out I could just use PlotlyBase.jl for Pages.jl instead.
> 
> Now, I have \[Figures.jl\](https://github.com/EricForgy/Figures.jl). Figures.jl provides a \`display\` that will display PlotlyJS charts in a draggable "Figure" in a browser window and depends on PlotlyJS.jl proper.
> 
> My idea is to:
> 
> \- Not lose any Blink.jl functionality currently in PlotlyJS.jl
> \- Use Requires.jl so that functionality only gets loaded if someone independently does \`using Blink\`
> \- Remove Blink.jl as a dependency of PlotlyJS.jl
> 
> Reason: I don't want people to have to install Blink.jl to use my package that has a dependency on PlotlyJS.jl.
> 
> What do you think?
> 
> If you are open to this idea, I can submit a PR 🙏 
> 
> Edit: By the way, if you are open to this, I may do something similar with WebIO.jl since I'd like to use PlotlyJS.jl without acquiring a dependency on WebIO.jl as well. In that case, I might even add Figures.jl as a backend to PlotlyJS.jl with the same philosophy, i.e. using Requires.jl so PlotlyJS.jl doesn't have a dependency on Figures.jl but can take advantage of it.

as well as this discussion

> [@State of PlotlyJS and support packages](https://discourse.julialang.org/t/state-of-plotlyjs-and-support-packages/86119):
>
> [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?

and the suggestion there to consider [PlotlyLight](https://github.com/JuliaComputing/PlotlyLight.jl) for your use-case.

There is also the existing [PlotlyBase](https://github.com/sglyon/PlotlyBase.jl) that “knows how to emit the proper MIME data to display using the jupyterlab plotly renderer” ([Remove Blink dependency? · Issue #184 · JuliaPlots/PlotlyJS.jl · GitHub](https://github.com/JuliaPlots/PlotlyJS.jl/issues/184#issuecomment-370450011)).

---

<div class="post-metadata">

**Author:** ![halleysfifthinc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/halleysfifthinc/32/206280_2.png) [@halleysfifthinc](https://discourse.julialang.org/u/halleysfifthinc)\
**Post date:** [November 1, 2022, 12:43pm UTC](https://discourse.julialang.org/t/plotlyjs-users-poll/89576/7 "2022-11-01T12:43:34Z")

</div>

PlotlyJS has the ability to update existing plots with WebIO (without re-displaying) and use Observables to respond to changes in plots (e.g. hover events, clicks, etc), and its one of the reasons I use PlotlyJS. However, that functionality is not present in PlotlyBase or PlotlyLight.
