Plotly
Plotly is the analytical charting engine; Evil Charts is the product-UI treatment reference.
Routing Summary
Use Plotly when interaction, exploratory analysis, scientific chart types, Python notebooks, or a Dash application are central. Use Evil Charts when an existing React product primarily needs polished chart cards, legends, tooltips, and shadcn/Recharts visual treatments. The two can be design references for each other, but their implementation layers are different. Source: Plotly product site and Evil Charts docs, reviewed 2026-07-14
Selection Matrix
| Need | Prefer |
|---|---|
| Python analysis, notebooks, scientific visualization | Plotly.py |
| Interactive browser charts with Plotly's trace/layout model | Plotly.js |
| Full Python analytical application | Plotly Dash |
| shadcn-style dashboard chart blocks in a React product | Evil Charts / Recharts |
| Static editorial chart with strict custom art direction | Evaluate a lower-level SVG/canvas or publication workflow first |
Current Snapshot
As checked on 2026-07-14, plotly.js npm latest is 3.7.0, published 2026-07-03, and the MIT-licensed GitHub repository has roughly 18.3K stars. Plotly.py on PyPI is 6.9.0, published 2026-07-09, and its MIT-licensed repository has roughly 18.7K stars. Version the concrete JS or Python package in the consuming project; “Plotly” is a product family, not one dependency. Source: npm, PyPI, and GitHub APIs, checked 2026-07-14
Integration Rules
- Choose the chart from the analytical question, not from a gallery screenshot.
- Keep units, accessible labels, hover/focus behavior, and reduced-motion behavior explicit.
- Separate data transforms from presentation configuration so the chart can be tested.
- Test dense data and small screens; an interactive chart that only works at demo width is not production-ready.
Timeline
- 2026-07-14 | Added beside Evil Charts with a clear analytical-engine versus product-treatment boundary and current package snapshots. Source: User request, 2026-07-14