/where-is-the-shiny-python

Asking the perennial question: "Where is the Python Shiny App equivalent?"

MIT LicenseMIT

Looking for:

  • Python backend
  • Web frontend
  • Dashboard UI: No code needed in frontend
  • Dashboard UI: Multiple linked visualizations
  • Extensible
  • Performant with large datasets
  • Open source

Threads

(Links from these have been followed below.)

Tools

Dash

Plotly Dash

  • home
  • github (8,784 stars, 876 forks, 29 contributors, last commit Apr 17, 2019)

jupyterlab-dash

  • github (121 stars, 16 forks, 4 contributors, last commit Mar 24, 2019)

A JupyterLab extension for rendering Plotly Dash apps as a separate window

Jupyter extensions

BeakerX

  • github (2100 stars, 307 forks, 31 contributors, last commit today)

BeakerX is a collection of JVM kernels and interactive widgets for plotting, tables, autotranslation, and other extensions to Jupyter Notebook.

pyviz/Panel

  • home
  • github (150 stars, 15 forks, 10 contributors, last commit Apr 14, 2019)

Panel is novel in that it supports nearly all plotting libraries, works just as well in a Jupyter notebook as on a standalone secure web server, uses the same code for both those cases, supports both Python-backed and static HTML/JavaScript exported applications

A project under pyviz: "PyViz is a coordinated effort to make data visualization in Python easier to use, easier to learn, and more powerful."

Jupyter appmode

  • github (205 stars, 35 forks, 5 contributors, last commit Mar 13, 2019)

Jupyter extension

When a notebook is opened in appmode, all code cells are automatically executed. In order to present a clean UI, all code cells are hidden and the markdown cells are read-only."

Jupyter Dashboards

  • readthedocs
  • github (900 stars, 174 forks, 17 contributors, last commit Aug 30, 2018)

Inactive: Jupyter extension. Cells can be arranged in grids, rather than occupying the full width. Project had initial funding from IBM, then lost energy.

Easy drag-and-drop layout of cell outputs in a grid, one-click publish, secure execution of the notebook by not accepting code execution from the browser.

Notebooks outside Jupyter and Jupyter alternatives

Voila

Alternate notebook server

  • By default, voila disallows execute requests from the front-end, disabling the ability to execute arbitrary code.
  • By defaults, voila runs with the strip_source option, which strips out the input cells from the rendered notebook.

ThebeLab

Javascript library: Code snippets in HTML are sent to JupyterLab for eval, and the results are shown. Not sure if communication between separate components in HTML is possible.

Apache Zeppelin

Alternative notebook system. One superficial difference is that you can set a width (0-12) on cells, and it will float successive cells into the remaining space, allowing dashboard-style interfaces out of the box.

Other

Bowtie

Bowtie is a library for writing dashboards in Python. No need to know web frameworks or JavaScript, focus on building functionality in Python.

Comparisons

Bokeh vs. Dash: January 30, 2018

I would use Dash by default:

  • it uses plotly for python which makes it very powerful
  • it uses React on the frontend which makes it easy add components
  • I coded more easily on Dash than on Bokeh, which confirms the opinion of other users I cited

If you’re still unsure about which one to choose:

  • Do a POC on Dash of your most critical features
  • Do a POC on Bokeh if you got blocked by a lack of interactions between graphs (like panning multiple graphs at the same time)
  • Then decide if you want to sacrifice some features to use Dash or if you’re fine with Bokeh

Shiny vs. Dash: March 6, 2019

Shiny is a sleek, feature rich framework. It lowers the barrier to entry for creating rich interactive web apps but is also hackable, for those who want to build something complex and customized and who have the will to hammer though. The Shiny community is awesome.

Dash is pretty new and still a little rough around the edges. It was built to be customized, so those who love hacking and tweaking may find a friend in Dash. And since it is built on Python and Flask, the ecosystem available for use in Dash apps is already huge.

Zeppelin vs. Jupyter: March 25, 2017

As far as I see, for now Zeppelin doesn’t cover all Jupyter’s features and possibilities, also it is not so stable and popular among analytic users. But already now Zeppelin shows that it is designed for enterprise users – thus it has great LDAP integration feature, permissions management system and so on.