Overview of the different interactive plot renderers in the browser (Javascript)

Would someone have the “big picture” in mind of the different client-side in-browser rendering solutions for charts / plots ?

I have seen:

  • bokeh (interactive with BokehJS)
  • matplotlib (rendered into a static image displayed in the browser I guess, is that correct?)
  • plotly (interactive with plotlyJS)
  • altair/vega (very often the examples I found were static, like images, and not zoomable/movable, but here is an interactive plot : what is the Javascript solution under the hood in action here? I see altair is 100% Python and no Javascript)

If someone has more experience about the different in-browser plot renderers, it would be super interesting!


  • after further research, Altair is indeed 100% Python, but Vega seems to be the part which provides in-browser interactivity: GitHub - vega/vega: A visualization grammar., as an example this is interactive:

    import altair as alt
    from vega_datasets import data
    cars = data.cars()
    chart = alt.Chart(cars).mark_point().encode(x='Horsepower', y='Miles_per_Gallon', 
  • Side-question: does Streamlit also provide its own JS client-side chart rendering code, or does it only re-use existing solutions (bokeh, altair, etc.)?