77 karma · joined June 21, 2017
I don't think that Dash will replace standard CRUD style websites. It's more for the visualization and data-science space.
The main limitation with Dash is that every interaction has to be through components with pre-named IDs. That means that Dash doesn't support apps that need to bind interactivity or updates on an arbitrary number of items (for example, a TODO app with `N` number of items where each item can be modified). In traditional websites, this is handled through URL patterns, query strings, or client-side through JavaScript. Eventually, Dash might have the abstraction of "ID groups" or "ID patterns", but it doesn't have that quite yet. This type of application is common in standard CRUD websites, less common in data-viz applications or dashboards.
In the visualization space, Dash is for both the one-off visualizations (e.g. add a dropdown to a graph) as well as more complex applications that have drill down and search that you might commonly see in something like Tableau.
Some examples:
- quick one-off visualization: https://plot.ly/dash/gallery/stock-tickers/
- more complex drill down example: https://plot.ly/dash/gallery/new-york-oil-and-gas
- the dash userguide website is itself a dash app: https://plot.ly/dash
- a dash app styled like a traditional report: https://plot.ly/dash/gallery/goldman-sachs-report/
> Have you thought about Gapminder like animations?
Definitely. The user guide actually walks you through creating an app with world indicator data. Check out the last example here: https://plot.ly/dash/getting-started-part-2. As you hover over points in the scatter plot, the time series updates with data corresponding to that point. A slider below the chart filters the scatter plot by year.
We recently added animations to plotly.js (the graphing library that's used by Dash) so that points can transition smoothly between states. That's accessible in dash by setting `animate=True` in the `dash_core_components.Graph` component.
One of the neat things about Dash is that you have full control over the visuals and the analytics. So you could easily update this example to display the "trails" behind the scatter plots as they are animating or programatically filter or aggregate the data before plotting it.
> Could you elaborate on what options there is for visualizing geographic information?
Plotly.js uses MapboxGL under the hood for satellite scatter and line plots. We also have lower-resolution SVG-based world and USA maps for choropleths, line, and scatter plots. You can see some examples of community generated maps in the feed: https://plot.ly/feed/?q=plottype:scattermapbox or just play around in the chart editor (https://plot.ly/create) to get a sense of what's available.
Through the `scattermapbox` chart type you can plot custom shapefiles but we can't yet color those shapefiles through a data array. We're looking for a company to help sponsor improvements like these.
- The dash docs (https://plot.ly/dash) are itself a Dash app. They're getting a lot of traffic today with the launch and they're holding up OK to hundreds of active users.
- The state of Dash apps is entirely in the front-end (in JS in the web browser). The Dash app backend (the python part) is really lightweight - it's a flask server (that you run with an application server like gunicorn) that dispatches to the functions that you decorate. If your functions are really resource-intensive (in memory or if they block for a long period of time), then the app's performance will suffer as part of that. However, since this analytic code is scoped inside a function, the memory will free up after the request is done.
- Since Dash's callbacks are functional, you can pretty easily add caching. Caching will store the previously computed values and serve them if the input arguments are the same. There is some more info in the "performance" section of the docs: https://plot.ly/dash/performance