Spaces:
Running
Running
title: Visual Vocabulary | |
emoji: π¨ | |
colorFrom: blue | |
colorTo: purple | |
sdk: docker | |
pinned: false | |
license: apache-2.0 | |
short_description: Vizro - Visual vocabulary | |
# Visual vocabulary | |
### Welcome to our visual vocabulary dashboard! π¨ | |
This dashboard serves as a comprehensive guide for selecting and creating various types of charts. It helps you decide | |
when to use each chart type, and offers sample Python code using [Plotly](https://plotly.com/python/), and | |
instructions for embedding these charts into a [Vizro](https://github.com/mckinsey/vizro) dashboard. | |
The charts in this dashboard are designed to make it easy for anyone to create beautiful and sophisticated visuals. | |
Our goal is to help you understand best practices in data visualization, ensure your charts effectively communicate | |
your message, and streamline the creation of high-quality, interactive visualizations. | |
Created by: | |
- [Huong Li Nguyen](https://github.com/huong-li-nguyen) and [Antony Milne](https://github.com/antonymilne) | |
- Images created by QuantumBlack | |
Inspired by: | |
- [The FT Visual Vocabulary](https://github.com/Financial-Times/chart-doctor/blob/main/visual-vocabulary/README.md): | |
[Alan Smith](https://github.com/alansmithy), [Chris Campbell](https://github.com/digitalcampbell), Ian Bott, | |
Liz Faunce, Graham Parrish, Billy Ehrenberg, Paul McCallum, [Martin Stabe](https://github.com/martinstabe). | |
- [The Graphic Continuum](https://www.informationisbeautifulawards.com/showcase/611-the-graphic-continuum): | |
Jon Swabish and Severino Ribecca | |
Credits and sources: | |
- Charting library: [Plotly](https://github.com/plotly/plotly.py) | |
- Plotly Express chart examples: [Plotly Express](https://plotly.com/python/plotly-express/) | |
- Data visualization best practices: [Guide to data chart mastery](https://www.atlassian.com/data/charts) | |
## Chart types | |
The dashboard is still in development. Below is an overview of the chart types for which a completed page is available. | |
| Chart Type | Status | Category | Credits & sources | API | | |
| --------------------- | ------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | |
| Arc | β | Part-to-whole | | | | |
| Area | β | Time | [Filled area plot with px](https://plotly.com/python/filled-area-plots/) | [px.area](https://plotly.com/python-api-reference/generated/plotly.express.area) | | |
| Bar | β | Magnitude | [Bar chart with px](https://plotly.com/python/bar-charts/) | [px.bar](https://plotly.com/python-api-reference/generated/plotly.express.bar) | | |
| Barcode | β | Distribution | | | | |
| Beeswarm | β | Distribution | | | | |
| Boxplot | β | Distribution | [Box plot with px](https://plotly.com/python/box-plots/) | [px.box](https://plotly.github.io/plotly.py-docs/generated/plotly.express.box) | | |
| Bubble | β | Correlation | [Scatter plot with px](https://plotly.com/python/line-and-scatter/) | [px.scatter](https://plotly.com/python-api-reference/generated/plotly.express.scatter) | | |
| Bubble map | β | Spatial | [Bubble map in px](https://plotly.com/python/bubble-maps/) | [px.scatter_map](https://plotly.github.io/plotly.py-docs/generated/plotly.express.scatter_map) | | |
| Bubble timeline | β | Time | | | | |
| Bullet | β | Magnitude | | | | |
| Bump | β | Ranking | | | | |
| Butterfly | β | Deviation, Distribution | [Pyramid charts in Plotly](https://plotly.com/python/v3/population-pyramid-charts/) | [go.Bar](https://plotly.com/python-api-reference/generated/plotly.graph_objects.Bar.html) | | |
| Chord | β | Flow | | | | |
| Choropleth | β | Spatial | [Choropleth map with px](https://plotly.com/python/choropleth-maps/) | [px.choropleth](https://plotly.github.io/plotly.py-docs/generated/plotly.express.choropleth.html) | | |
| Column | β | Magnitude, Time | [Bar chart with px](https://plotly.com/python/bar-charts/) | [px.bar](https://plotly.com/python-api-reference/generated/plotly.express.bar.html) | | |
| Column and line | β | Correlation, Time | [Multiple chart types in Plotly](https://plotly.com/python/graphing-multiple-chart-types/) | [go.Bar](https://plotly.com/python-api-reference/generated/plotly.graph_objects.Bar.html) and [go.Scatter](https://plotly.com/python-api-reference/generated/plotly.graph_objects.Scatter.html) | | |
| Connected scatter | β | Correlation, Time | [Line plot with px](https://plotly.com/python/line-charts/) | [px.line](https://plotly.com/python-api-reference/generated/plotly.express.line) | | |
| Cumulative curve | β | Distribution | | | | |
| Diverging bar | β | Deviation | [Bar chart with px](https://plotly.com/python/bar-charts/) | [px.bar](https://plotly.com/python-api-reference/generated/plotly.express.bar) | | |
| Diverging stacked bar | β | Deviation | [Plotly forum - diverging stacked bar](https://community.plotly.com/t/need-help-in-making-diverging-stacked-bar-charts/34023/2) | [go.Bar](https://plotly.com/python-api-reference/generated/plotly.graph_objects.Bar.html) | | |
| Donut | β | Part-to-whole | [Pie chart with px](https://plotly.com/python/pie-charts/) | [px.pie](https://plotly.com/python-api-reference/generated/plotly.express.pie) | | |
| Dot map | β | Spatial | [Bubble map in px](https://plotly.com/python/bubble-maps/) | [px.scatter_map](https://plotly.github.io/plotly.py-docs/generated/plotly.express.scatter_map) | | |
| Dumbbell | β | Distribution | [Dumbbell plots in Plotly](https://community.plotly.com/t/how-to-make-dumbbell-plots-in-plotly-python/47762) | [px.scatter](https://plotly.com/python-api-reference/generated/plotly.express.scatter.html) and [add_shape](https://plotly.com/python/shapes/) | | |
| Fan | β | Time | | | | |
| Flow map | β | Spatial | | | | |
| Funnel | β | Part-to-whole | [Funnel plot with px](https://plotly.com/python/funnel-charts/) | [px.funnel](https://plotly.com/python/funnel-charts/) | | |
| Gantt | β | Time | [Gantt chart with px](https://plotly.com/python/gantt/) | [px.timeline](https://plotly.com/python-api-reference/generated/plotly.express.timeline.html) | | |
| Gridplot | β | Part-to-whole | | | | |
| Heatmap | β | Time | [Heatmaps with px](https://plotly.com/python/heatmaps/) | [px.density_heatmap](https://plotly.com/python-api-reference/generated/plotly.express.density_heatmap.html) | | |
| Correlation matrix | β | Correlation | | | | |
| Histogram | β | Distribution | [Histograms with px](https://plotly.com/python/histograms/) | [px.histogram](https://plotly.github.io/plotly.py-docs/generated/plotly.express.histogram) | | |
| Line | β | Time | [Line plot with px](https://plotly.com/python/line-charts/) | [px.line](https://plotly.com/python-api-reference/generated/plotly.express.line) | | |
| Lollipop | β | Ranking, Magnitude | | | | |
| Marimekko | β | Magnitude, Part-to-whole | | | | |
| Network | β | Flow | | | | |
| Ordered bar | β | Ranking | [Bar chart with px](https://plotly.com/python/bar-charts/) | [px.bar](https://plotly.com/python-api-reference/generated/plotly.express.bar.html) | | |
| Ordered bubble | β | Ranking | | | | |
| Ordered column | β | Ranking | [Bar chart with px](https://plotly.com/python/bar-charts/) | [px.bar](https://plotly.com/python-api-reference/generated/plotly.express.bar.html) | | |
| Paired bar | β | Magnitude | [Histograms with px](https://plotly.com/python/histograms/) | [px.histogram](https://plotly.github.io/plotly.py-docs/generated/plotly.express.histogram) | | |
| Paired column | β | Magnitude | [Histograms with px](https://plotly.com/python/histograms/) | [px.histogram](https://plotly.github.io/plotly.py-docs/generated/plotly.express.histogram) | | |
| Parallel coordinates | β | Magnitude | [Parallel coordinates plot with px](https://plotly.com/python/parallel-coordinates-plot/) | [px.parallel_coordinates](https://plotly.com/python-api-reference/generated/plotly.express.parallel_coordinates.html) | | |
| Pictogram | β | Magnitude | | | | |
| Pie | β | Part-to-whole | [Pie chart with px](https://plotly.com/python/pie-charts/) | [px.pie](https://plotly.com/python-api-reference/generated/plotly.express.pie) | | |
| Radar | β | Magnitude | [Radar chart with px](https://plotly.com/python/radar-chart/) | [px.line_polar](https://plotly.com/python-api-reference/generated/plotly.express.line_polar) | | |
| Radial | β | Magnitude | | | | |
| Sankey | β | Flow | [Sankey diagram in Plotly](https://plotly.com/python/sankey-diagram/) | [go.Sankey](https://plotly.github.io/plotly.py-docs/generated/plotly.graph_objects.Sankey.html) | | |
| Scatter | β | Correlation | [Scatter plot with px](https://plotly.com/python/line-and-scatter/) | [px.scatter](https://plotly.com/python-api-reference/generated/plotly.express.scatter) | | |
| Scatter matrix | β | Correlation | [Scatter matrix with px](https://plotly.com/python/splom/) | [px.scatter_matrix](https://plotly.github.io/plotly.py-docs/generated/plotly.express.scatter_matrix.html) | | |
| Slope | β | Ranking, Time | | | | |
| Sparkline | β | Time | | | | |
| Stacked bar | β | Part-to-whole | [Histograms with px](https://plotly.com/python/histograms/) | [px.histogram](https://plotly.github.io/plotly.py-docs/generated/plotly.express.histogram) | | |
| Stacked column | β | Part-to-whole | [Histograms with px](https://plotly.com/python/histograms/) | [px.histogram](https://plotly.github.io/plotly.py-docs/generated/plotly.express.histogram) | | |
| Stepped line | β | Time | [Line plot with px](https://plotly.com/python/line-charts/) | [px.line](https://plotly.com/python-api-reference/generated/plotly.express.line) | | |
| Surplus deficit line | β | Deviation | | | | |
| Treemap | β | Part-to-whole | [Treemap with px](https://plotly.com/python/treemaps/) | [px.treemap](https://plotly.com/python-api-reference/generated/plotly.express.treemap.html) | | |
| Venn | β | Part-to-whole | | | | |
| Violin | β | Distribution | [Violin plot with px](https://plotly.com/python/violin/) | [px.violin](https://plotly.com/python-api-reference/generated/plotly.express.violin.html) | | |
| Waterfall | β | Part-to-whole, Flow | [Waterfall charts in Plotly](https://plotly.com/python/waterfall-charts/) | [go.Waterfall](https://plotly.github.io/plotly.py-docs/generated/plotly.graph_objects.Waterfall.html) | | |
## How to contribute | |
Contributions are welcome! To contribute a chart, follow the steps below: | |
1. Check that a `svg` file named after the chart type is contained in the [assets](https://github.com/mckinsey/vizro/tree/main/vizro-core/examples/visual-vocabulary/assets/images/charts) folder. If not, [raise an issue](https://github.com/mckinsey/vizro/issues) in the repository. | |
2. Add the data set to `_pages_utils.py` if it doesn't already exist. Use existing data sets preferably or any other data set that is publicly available e.g. [plotly.express.data](https://plotly.com/python-api-reference/generated/plotly.express.data.html) | |
3. Create a new page for the chart type and add it to the relevant category `.py` file such as `correlation.py`, | |
`deviation.py`, `distribution.py`, etc. Ensure you add the page to the list of `pages` at the end of the `.py` file. | |
4. Add a `.py` file containing a code example of the chart type in the `pages/examples` folder, for instance, `area.py`. Take a look at existing examples. | |
5. Remove the `IncompletePage(..)` entry for that chart type in `chart_groups.py`. | |
6. Update this `README.md` with the new chart type, its status, category, and API links. | |
## How to run the example locally | |
1. Run the example with the command `hatch run example visual-vocabulary`. | |
2. You should now be able to access the app locally via http://127.0.0.1:8050/. | |