Library name | Language | Open-source? Does it cost money? | Requires internet connection? | Real-time support for data entry? | Strengths | Limitations | Connection details (requirements, cloud-based, etc.) | Extra info |
---|
Streamlit (https://streamlit.io/ ) | Python | | | | Beginner-friendly Simple API with excellent documentation Can mix visualizations into one presentation Can re-use Python code instead of rewriting it
| | Uses a localhost for local development Streamlit Cloud allows you to run applications in the cloud, share with colleagues https://streamlit.io/security
| You can display images, audio, and videos with Streamlit (Python Tutorial: Streamlit | DataCamp) You can input widgets Display progress and status bars Can show data visualization and maps Can make machine learning applications
|
Dash by Plotly (https://dash.plotly.com/?_gl=1*1fi05oh*_ga*MjU1ODgyMzguMTY3ODEyMjE5MQ..*_ga_6G7EE0JNSC*MTY3ODE0NDExNC40LjEuMTY3ODE0NjMwNS4wLjAuMA.. ) | Python | Open source, MIT licensed Free Dash Enterprise (ie. deployment server) has an associated cost → have to fill out some form on the website to learn more about pricing
| | | Pure Python → No Javascript unless you want to include Javascript assets Jupyter and Django integrations Cross-filtering/interacting with Plotly charts Aesthetics are more flexible, compatible with Bootstrap Has “callback” functions Robust modules library
| Difficulty with interactivity Difficulty to customize API No HTML → Must use Markdown function Cannot have two Python callbacks update the same element Limited colour options Plots that are shared are visible to everyone Takes time to load, a little slow
| | |
Seaborn (https://seaborn.pydata.org/index.html ) | Python | | | | Can install other libraries while using Seaborn since Seaborn is based on matplotlib Generates engaging plot to represent our data Feed our data using replot() method, library computes the values and places them without us worrying it Default themes are aesthetically pleasing Visualizes information in matrices and DataFrames
| Estimators are not suited for small datasets Calculating and plotting confidence intervals uses bootstraps Small datasets have inaccurate intervals since bootstraps are suited for large datasets Have to calculate the intervals ourselves
May need to reformat data (ie. Three common seaborn difficulties | by Michael Waskom | Medium) since Seaborn does not plot datasets normally Two different plot functions and difficulty plotting data other than categorical
| | Based on matplotlib Close integration with pandas Dataset oriented API for examining relationships between multiple variables Specialized support for categorical variables to show observations or aggregate statistics Concise control over matplotlib figure styling with several built-in themes. Tools for choosing color palettes to reveal data patterns
|
Bokeh (https://bokeh.org/ ) | Python | | | | Plots are flexible, interactive, and shareable Very Python centric Has a host of third-party libraries that extends its use with high-level user interface Handles data quickly Dashboards with Bokeh server are dynamic and very fast
| | | |
D3.js (https://d3js.org/ ) | Javascript | | | | Open source and can be used with other Javascript frameworks (ie. Angular.js, Ember.js, or React) Can add own features to source code to accomplish your goals Handles DOM, HTML, CSS, SVG, and canvas → does not need other plug-in other than browser, does not need additional debugging Can create dynamic, real-time transformation by manipulating DOM elements into data visualization Works on data and is specialized and appropriate with data visualization functions in Javascript library
| Does not support older browsers → need to put static placeholder if users are on older browsers Cannot easily conceal original data → Challenging to use D3 if you want to hide data Does not generate predetermined visualizations for you. Interactivity requires coding
| | Data driven, gets data from arrays, CSV, XML, TSV, JSON, etc., and also API Should know/have:
|
Charts.js (https://www.chartjs.org/ ) | Javascript | | | | Interactive charts Actively developed and supported Chart-types, animations Plugins supported Lots of Javascript framework integrations (React, Vue, Svelte, etc.) Lots of documentation, samples Suited for large data sets, skips data parsing, and normalization
| Canvas based → Bitmaps, shares the same issues as non-vectory format Only supports display of graphs and charts → Limited to standard charts
| | |
this is still a work in progress
References:
4 Python Packages to Create Interactive Dashboards | by Cornellius Yudha Wijaya | Towards Data Science
The best tools for Dashboarding in Python | by Abdishakur | Spatial Data Science | Medium
Pros and Cons of Streamlit 2023 (trustradius.com)
Python Tutorial: Streamlit | DataCamp
Pros & Cons of Dash - Dash Python - Plotly Community Forum
Plotly Dash vs Streamlit — Which is the best library for building data dashboard web apps? | by JP Hwang | Towards Data Science
5 challenges using Plotly Dash for web apps | Analytics Vidhya (medium.com)
Seaborn Library Python | Perks of Using Seaborn - DataScienceVerse
The Ultimate Python Seaborn Tutorial: Gotta Catch 'Em All (elitedatascience.com)
Is Seaborn too assertive at times? | by Pragya Verma | Analytics Vidhya | Medium
Bokeh Vs Plotly: Which One Is Better In 2022? - Buggy Programmer
D3.js Tutorial - Data Visualization Framework For Beginners (softwaretestinghelp.com)
Chart.js advantages and prominent features explained · Issue #10620 · chartjs/Chart.js · GitHub
Chart.js - Quick Guide (tutorialspoint.com)
D3 or Chart.js for Data Visualisation? (createwithdata.com)
(notes)
Name
Open-source (if paid, how much $)
Does it require a wireless connection?
Real-time support for data entryStrengths
Pain-points
easy to create
Limitations
Language (Python or Javascript compatible)
Connection Details (connection requirements, cloud-based etc.) (boolean of whether the software can receive data from a database directly (MySQL))
Any other additional details you think may be good to include?
power bi, tableau, streamlit, dash, javascript plotting library, dash (6 or 7 minimum options)