Data Visualization — Advanced
Rendering performance at real data scale
A scatter plot with a few hundred points renders instantly in any library — the same chart type with a few million points is a genuinely different engineering problem, and naively plotting all of it produces either a chart that takes minutes to render or one so overplotted (points stacked on top of each other) that it communicates nothing useful regardless of render time:
Datashader (and similar rendering-aggregation libraries) solve this by aggregating millions of points into a fixed-resolution pixel grid before rendering, rather than asking the renderer to individually draw each point — this is conceptually the same idea as a heatmap, but computed dynamically at whatever zoom level the viewer is at. For genuinely large datasets, the choice isn't "matplotlib vs. a faster library" — it's recognizing that naive point-per-point rendering is architecturally the wrong approach past a certain scale, and a density/aggregation-based rendering strategy is a different, necessary technique, not just an optimization.
Statistical visualization: distributions beyond a simple histogram
A single histogram commits to one bin-width choice, which can meaningfully change the apparent shape of a distribution — too few bins hides real structure (bimodality), too many bins shows noise as if it were signal:
A box plot alone (median, quartiles, outliers) can look identical for two genuinely different underlying distributions — famously, Anscombe's quartet and the more recent "Datasaurus" dataset both demonstrate datasets with identical summary statistics but radically different actual shapes. A violin plot or KDE shows the actual distribution shape directly, catching bimodality, skew, or genuine outlier clusters that a box plot's five-number summary alone would hide — worth reaching for specifically when a distribution's actual shape, not just its central tendency, matters to the analysis.
Building interactive dashboards with Plotly Dash or Streamlit
For interactivity beyond what a BI tool (Power BI, Tableau — covered in the Dashboarding content) provides, a code-based dashboard framework gives full control over interaction logic:
Streamlit trades some flexibility for genuine speed — a working interactive dashboard from a data analysis script in a few lines, appropriate for internal tools and rapid prototyping. Dash (also built on Plotly) offers more granular control over layout and callback logic, at the cost of more code, and is the better fit once a dashboard's interaction requirements genuinely exceed what Streamlit's simpler model handles cleanly — the choice between them, and between either and a BI tool, should be driven by how much custom interaction logic is actually needed versus how much of the interactivity is standard filter/drill-down behavior a BI tool already provides out of the box.
Designing charts for a non-technical executive audience specifically
The chart design principles from earlier tabs (annotation, avoiding truncated axes, clear color encoding) matter most acutely for an executive audience, who will spend seconds, not minutes, with a chart before forming a conclusion:
This is a genuinely different design target from an analyst-facing exploratory dashboard (which should support deep, flexible interaction) — designing one chart to serve both audiences well is a common mistake; a chart built for quick executive consumption and a chart built for analyst exploration are different artifacts with different design priorities, even when they're built from the same underlying data.

