34 min read

> "Amateurs sit and wait for inspiration. The rest of us just get up and go to work."

Learning Objectives

  • Describe the 8-step visualization workflow from question to publication
  • Apply each step to a real dataset, documenting decisions at each stage
  • Conduct a visualization critique using a structured rubric
  • Explain common failure modes at each workflow stage
  • Build a personal visualization toolkit: libraries, styles, templates, checklists
  • Integrate all skills from the book into a coherent practice

Chapter 33: The Visualization Workflow — From Question to Published Chart

"Amateurs sit and wait for inspiration. The rest of us just get up and go to work." — Stephen King, On Writing


33.1 Why Process Matters

This is the book's penultimate chapter, and it is a synthesis. For 32 chapters we have covered specific techniques: perception, color, chart types, matplotlib, seaborn, Plotly, Altair, geospatial, networks, time series, statistical figures, dashboards, reports, branding. Each chapter taught a specific skill. This chapter is different. It does not teach a new technique. It integrates everything into a workflow — a specific process for producing a visualization from start to finish.

Why process? Because technical skill alone does not produce good visualizations. A practitioner with excellent matplotlib skills can still produce bad charts if they jump to code without thinking about the question, skip critique, or publish without verification. Conversely, a practitioner with modest technical skill but a disciplined process often produces better work than a technical virtuoso who winged it. The process — not the tools — is what separates good visualization from bad.

The chapter's threshold concept is process over product. The quality of a visualization is determined by the quality of the process that produced it. Rushing to code without sketching, skipping critique, publishing without a checklist: all of these shortcuts produce mediocre work regardless of technical skill. The workflow is the skill, and learning to follow it consistently is the most valuable thing you can take from this book.

The 8-step workflow covered in this chapter is:

  1. Question: what am I trying to answer?
  2. Data assessment: what do I have?
  3. Chart selection: which chart type fits the question and data?
  4. Paper sketch: what should the chart look like?
  5. Prototype: build a rough version quickly.
  6. Critique: evaluate the prototype against a rubric.
  7. Refine: iterate based on critique.
  8. Publish: format, brand, export, distribute.

Each step is a stage of work with its own deliverables, failure modes, and tools. The steps are roughly sequential, but they can iterate — a critique may send you back to sketching, and a refinement may raise a new question. The workflow is a scaffold, not a strict pipeline.

33.2 Step 1: The Question

Every visualization starts with a question. Not a dataset, not a tool, not a chart type. A question. "What is the relationship between X and Y?" or "How has Z changed over time?" or "Which category has the most of W?" The question is the reason the chart exists, and without it, the chart is an answer in search of a purpose.

The question should be:

Specific. "How have global temperatures changed?" is too vague. "By how much has the global average temperature anomaly changed between 1900 and 2024, and when did the change accelerate?" is specific enough to guide chart selection.

Answerable with the data you have. If the question requires data you do not have, either get the data or change the question. Don't build a chart that pretends to answer an unanswerable question.

Aligned with the audience. Different audiences have different questions. An executive wants "is the trend good or bad?" A scientist wants "what is the 95% confidence interval around the trend?" A journalist wants "what is the most striking recent change?" Know your audience and frame the question for them.

Testable. You should be able to tell, after the chart is built, whether it answers the question. "Does the chart clearly show the accelerating warming trend between 1980 and 2024?" is testable. "Is the chart nice?" is not.

Writing the question down, in one sentence, is the most important step. Do it before opening a Jupyter notebook. Do it before looking at the data. The sentence is the rudder that steers the rest of the workflow; without it, you drift.

A common failure mode: having multiple questions and trying to answer all of them in one chart. The result is usually a confused chart that answers none well. If you have multiple questions, build multiple charts. Each chart, one question.

33.3 Step 2: Data Assessment

Once you have the question, look at the data. Not to visualize it — just to understand it.

What columns exist? What types (numeric, categorical, datetime)? What do they represent?

How many rows? If it's 100, a scatter plot shows everything. If it's a million, you need aggregation (Chapter 28).

Is there missing data? How much? In which columns? Is it random or systematic?

What are the ranges and distributions? Are the numeric columns skewed? Are there outliers? Do the categories have wildly different frequencies?

Are there multiple tables? Do they need to be joined? What is the key?

What is the temporal coverage? If it's a time series, what is the time range? Is it continuous or has it gaps?

What is the provenance? Where did the data come from? When was it collected? How was it cleaned? The provenance affects how you interpret (and caveat) the results.

Use df.info(), df.describe(), df.head(), df.isnull().sum(), and similar pandas methods to get a quick sense of the data. Don't skip this step. A chart built without understanding the data is a chart that will mislead the reader when an edge case or outlier appears.

A common failure mode: trusting the data without checking. A column called "revenue" might be in thousands in one row and in millions in another, if the data came from multiple sources. A "date" column might be a mix of formats. A "country" column might have typos ("USA" vs "United States" vs "United States of America"). Fix these issues before visualizing, or the chart will be wrong.

After this step, you should know exactly what data is available and what it looks like. You should also know what is missing or unreliable, so you can avoid building claims on weak foundations.

33.4 Step 3: Chart Selection

With the question and data in hand, choose a chart type. Chapter 5 covered the full decision framework; here we apply it.

Map the question to a question type:

  • Comparison ("which category is largest?"): bar chart, grouped bar, horizontal bar.
  • Change over time ("how has X evolved?"): line chart, time series.
  • Distribution ("what are the typical values?"): histogram, KDE, box plot, violin plot.
  • Relationship ("does X correlate with Y?"): scatter plot, regression overlay, hex bin for large data.
  • Composition ("what parts make up the whole?"): stacked bar, stacked area, treemap, pie (only if few categories).
  • Spatial ("where does X happen?"): choropleth, dot map, hex bin map.
  • Hierarchy ("how is X organized?"): tree, treemap, sunburst.
  • Relational ("how do X and Y connect?"): network diagram, adjacency matrix.

Match the chart to the data shape:

  • Two numeric columns: scatter plot or line chart depending on whether one is temporal.
  • One numeric + one categorical: bar chart, box plot, strip plot.
  • One numeric + time: line chart.
  • Many numeric columns: pair plot, correlation heatmap, parallel coordinates.
  • Geographic coordinates: map (chapter 23).
  • Network (nodes + edges): network diagram or adjacency matrix (chapter 24).

The choice is rarely unique — most questions can be visualized multiple ways. Pick the one that most directly answers the question with the least visual effort from the reader.

A common failure mode: picking a chart type because it looks cool. 3D charts, radar charts, stacked-area-of-many-categories — all tempting but usually wrong. The question determines the chart, not the aesthetic appeal.

33.5 Step 4: Paper Sketch

Before writing any code, sketch the chart on paper (or a whiteboard, or a tablet). Draw the axes, the data, the labels, the title. Estimate the proportions. Decide what gets emphasized and what gets de-emphasized.

The sketch doesn't have to be artistic. It just needs to answer:

  • What is on the x-axis? What is on the y-axis? What are the ranges?
  • What color encoding, if any? What shape encoding?
  • Where does the title go? What does it say?
  • What annotations are present? Labels, arrows, reference lines?
  • What goes in the legend? Does the chart need a legend at all, or is direct labeling better?
  • What is the aspect ratio? Wide or tall?
  • Roughly how much whitespace?
  • What is the reader supposed to notice first?

The sketch is cheap and fast. A minute of paper sketching saves an hour of code iteration. You can try several variations before committing to one — a line chart sketch, a bar chart sketch, a slope chart sketch — and compare them. The comparison reveals which approach fits the question best.

Sketching forces design decisions that code defers. In code, matplotlib's default layout is tempting because it's already there. On paper, you have to draw every element, which means you have to choose. The choice — the act of deciding — is the valuable part. Once you know what the chart should look like, coding it is routine.

A common failure mode: skipping the sketch and going straight to code. The result is a chart that inherits matplotlib's defaults — default figsize, default font, default colors, default title position — and requires many iterations to fix. Sketching produces the intended chart directly; coding from scratch produces a default chart that must be incrementally improved.

33.6 Step 5: Prototype

With a sketch in hand, write code. Aim for speed over quality at this stage. Get something working quickly, even if it's ugly. The prototype is a throwaway — you will critique it, improve it, possibly discard it.

Use the simplest code that produces something close to your sketch. Don't worry about style sheets yet. Don't worry about perfect colors. Don't worry about exact typography. Get the data into the chart and see if it looks like your sketch.

Typical prototype code in matplotlib:

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(df["year"], df["temperature"], color="red")
ax.set_title("Temperature over time")
ax.set_xlabel("Year")
ax.set_ylabel("Temperature (°C)")

Four lines, no style sheet, no fancy formatting. It works or it doesn't. If it works — matches your sketch roughly — you move on. If it doesn't, you figure out why and fix it.

The prototype phase is where many practitioners get stuck. They try to make the prototype perfect before evaluating it. Don't. The prototype is not the final product. It is a rough draft that exists to be critiqued. Get to "rough version that mostly works" as quickly as possible, then move on to critique.

A common failure mode: polishing the prototype before critiquing. This wastes time because the critique may reveal that the whole approach is wrong, and all the polish is thrown away. Critique first, polish second.

33.7 Step 6: Critique

Critique is the most important step and the one most commonly skipped. You look at your prototype and ask: is this answering the question? Is it clear? Is it accurate? Is it honest? Is it accessible? You use a structured rubric to force yourself to look at specific aspects of the chart that you might otherwise gloss over.

A minimal critique rubric:

  1. Question answered? Does the chart clearly answer the question you wrote in Step 1? If not, go back to sketch or chart selection.
  2. Data integrity? Are the values accurate? Are the scales correct? Is anything misleading (truncated axes, log scales without disclosure, dual axes with manipulation)?
  3. Chart type appropriate? Is the chart type matched to the data and question? Would a different chart type work better?
  4. Encoding appropriate? Are the visual channels (position, color, size, shape) well-chosen? Is color meaningful or decorative?
  5. Readable? Can you read the text at intended output size? Are the axes labeled? Are units disclosed?
  6. Accessible? Is the color palette colorblind-safe? Is the text large enough? Is the chart usable in grayscale?
  7. Title helpful? Is there an action title (Chapter 7)? Does it tell the reader what to conclude?
  8. Source disclosed? Is the data source attributed? Is the date or cutoff clear?
  9. Annotations helpful? Are key events or reference points marked? Is the reader told where to look?
  10. Clutter removed? Are there any decorative elements (3D effects, extra gridlines, unnecessary colors) that add noise without adding information?

Go through the rubric for every chart. Some answers will be "yes, no issues." Others will be "no, needs work." The ones that need work feed back into Step 7 (refine).

Self-critique is hard. You are attached to your own work. To critique honestly:

  • Step away for a few minutes before critiquing. Fresh eyes see problems you missed.
  • Apply the rubric rigidly. Don't skip items because you "know" the chart is fine.
  • Imagine a skeptical reader. What would they notice that you missed?
  • Show it to someone else. External critique is more valuable than self-critique if you can get it.
  • Print it out. Charts look different on paper than on screens; problems that were invisible on a laptop become obvious on a printout.

A common failure mode: skipping critique because the chart "looks fine." If you did not explicitly check each rubric item, you did not critique. The chart may still be fine, but you do not know that it is fine; you are guessing.

33.8 Step 7: Refine

Based on the critique, refine the chart. This is iterative. Each refinement addresses one specific issue from the critique. Fix it, re-evaluate, and move on to the next issue.

Typical refinements:

  • Apply the brand style (Chapter 32) to make the chart look polished.
  • Change the title to an action title.
  • Remove unnecessary gridlines or lighten them.
  • Add annotations for key events or data points.
  • Adjust the color palette for accessibility.
  • Change the chart type if the critique revealed a better option.
  • Modify axis ranges for banking to 45 degrees or for appropriate zoom.
  • Add source attribution at the bottom.
  • Write a caption summarizing the finding.

Refinement can lead back to earlier steps. Sometimes the critique reveals that the chart type is wrong — back to Step 3. Sometimes the question was not quite right — back to Step 1. This iteration is healthy, not a sign of failure.

Know when to stop refining. A chart can always be improved, but there is a point of diminishing returns. Signs you should stop:

  • The chart answers the question clearly.
  • No rubric item is flagged as a problem.
  • External readers understand it on first viewing.
  • Further changes are cosmetic, not substantive.

Stopping is as much a skill as refining. Perfectionism produces charts that are never published; pragmatism produces charts that ship. Aim for "good enough to serve the purpose," not "perfect."

A common failure mode: over-refining trivial charts. A quick internal dashboard does not need the polish of a journal publication. Match the refinement level to the stakes. A 10-minute internal chart is fine to ship at 80% polish; a cover figure in a Nature paper should be at 99%.

33.9 Step 8: Publish

Finally, publish. This step is not just "save the file." It includes:

Choose the format. PNG for web. PDF for print. SVG for web vector. HTML for interactive. The format depends on the delivery context.

Export at appropriate resolution. 300 DPI for print, 150 DPI for screen, 72 DPI for low-bandwidth contexts. Mismatched resolution produces pixelated or bloated files.

Apply branding. Via the style sheet, template, and helper module from Chapter 32. Should be automatic at this point — the chart inherits the brand without additional effort.

Write the caption or accompanying text. The chart is usually embedded in a report, dashboard, or presentation. Write the surrounding context: what the chart shows, what conclusion to draw, what caveats apply.

Check the checklist. Go through a pre-publication checklist (Chapter 27 for scientific, Chapter 32 for brand compliance). Every chart, every time.

Save the source code. Keep the Python script or notebook that produced the chart in version control. This ensures the chart is reproducible and easy to update when the data changes.

Distribute. Email to stakeholders, embed in a report, post to a dashboard, include in a slide deck. The distribution method depends on the audience and context.

Archive. For important charts, keep an archive copy with metadata: when it was produced, what data it came from, what version of the code, who approved it. This is useful for audits and future reference.

Publishing is the end of the workflow, but it is also the handoff. Once published, the chart is in the world, and other people will see it. Make sure it is ready.

33.10 The Master Critique Rubric

Here is a more comprehensive critique rubric, covering all the aspects you might need for a major publication:

Data integrity (4 points): 1. Values are correct and verified against the source. 2. Scales are appropriate (no truncated axes without disclosure, no dual axes without justification). 3. Sample size is disclosed. 4. Uncertainty is visible (error bars, confidence bands, where applicable).

Encoding appropriateness (4 points): 5. Chart type matches the question type (comparison, trend, distribution, etc.). 6. Visual channels (position, color, size, shape) are well-chosen. 7. Color is meaningful, not decorative; palette is colorblind-safe. 8. The cognitive cost of decoding the chart matches its importance.

Design quality (4 points): 9. Fonts and sizes are readable at the intended output size. 10. Whitespace is generous; the chart does not feel cramped. 11. Gridlines, spines, and chrome are minimal or absent as appropriate. 12. The chart looks intentional, not generic.

Accessibility (3 points): 13. Colors are distinguishable for colorblind readers. 14. Text contrast meets WCAG AA standards. 15. Alt-text is provided for screen readers (if digital).

Ethical compliance (3 points): 16. No misleading axis manipulation. 17. No cherry-picked time ranges or subsets. 18. Uncertainty is honestly displayed.

Narrative clarity (4 points): 19. Title is an action title (Chapter 7) stating the finding. 20. The chart answers the question it was designed to answer. 21. Context (source, date, scope) is disclosed. 22. The "so what" is clear.

Brand compliance (3 points): 23. Follows the organization's style sheet and template. 24. Uses brand colors, fonts, and conventions. 25. Matches the visual language of other charts in the same publication.

Twenty-five points total. A perfect score is rare and usually unnecessary. Aim for ~20/25 on internal charts and 23+/25 on high-stakes publications. The rubric is a tool for identifying weaknesses, not a scorecard for ranking.

33.11 Building Your Personal Visualization Toolkit

After 32 chapters, you have been exposed to dozens of libraries and techniques. The challenge is to build a personal toolkit — your go-to libraries, style sheets, templates, and helper modules that you reach for without thinking.

A practitioner's toolkit typically includes:

Libraries you know well: - One static library (usually matplotlib or seaborn). - One interactive library (usually Plotly or Altair). - One dashboard framework (usually Streamlit for speed, Dash for complexity). - Domain-specific tools as needed (NetworkX, geopandas, datashader).

Style sheets and templates: - A personal or organizational .mplstyle file. - A Plotly template matching the style sheet. - A helper module with your standard functions.

Reference materials: - Bookmarked documentation for your main libraries. - A few go-to books or websites for design inspiration. - A personal snippet library of code patterns you use often.

Workflow checklists: - A chart critique rubric (like Section 33.10). - A pre-publication checklist for each delivery format. - A list of common questions mapped to chart types.

Example charts: - A gallery of your best work (for reuse and for showing others). - A gallery of charts you admire (for inspiration). - A gallery of charts that illustrate what to avoid (for critique practice).

Your toolkit grows over time. Add to it as you encounter new needs. Remove from it when a tool no longer serves you. Keep it lean enough that you can use the whole thing daily.

33.12 Progressive Project: The Full Climate Story

The book's climate project reaches its conclusion in this chapter. Over 32 chapters, you have built:

  • A basic matplotlib version of the climate line chart.
  • A customized, branded version with typography and annotations.
  • A multi-panel figure showing temperature, CO2, and sea level.
  • A calendar heatmap revealing monthly patterns.
  • A decomposition showing trend and seasonal components.
  • A seaborn-based multi-variable exploration.
  • An interactive Plotly dashboard with range sliders.
  • An Altair linked-view analysis.
  • A geospatial view of climate stations and regional anomalies.
  • A correlation network of climate variables.
  • A publication-quality 4-panel figure for a journal.
  • An automated PDF report pipeline.
  • A branded Climate Observatory style system.

For Chapter 33, the exercise is to apply the 8-step workflow to the full climate story. Pick one specific question ("How has the pace of global warming changed since 1950?") and walk through all 8 steps explicitly. Document your decisions at each stage. Produce a final chart that answers the question, following the workflow rigorously.

The goal is not to produce a new chart — you already have many. The goal is to consciously apply the workflow to a chart you produce, so the workflow becomes a habit rather than a list to read.

33.13 Common Failure Modes at Each Stage

Each step of the workflow has its own common mistakes. Knowing the failure modes helps you avoid them.

Step 1 (Question) failures: - Skipping the step entirely — jumping to data or code without a clear question. - Multiple questions conflated — trying to answer three things in one chart. - Vague question — "show trends in sales" vs. "how does Q4 2024 sales compare to Q4 2023 by product line?" - Audience mismatch — a question framed for one audience used for a different audience without adjustment. - Unanswerable question — asking something the data cannot support.

Step 2 (Data assessment) failures: - Trusting the data without checking — missing nulls, duplicates, format inconsistencies. - Ignoring provenance — building claims on data whose source or method is unknown. - Overlooking edge cases — the one outlier that will break a naive aggregation. - Not documenting the assessment — the understanding you build must be written down or it is lost.

Step 3 (Chart selection) failures: - Picking a chart type for aesthetic reasons — 3D charts, radar charts, dual-axis charts chosen for drama. - Matching the chart to the data rather than the question — "I have numeric columns, so scatter plot" ignores what the scatter plot is supposed to show. - Defaulting to familiar chart types — using a bar chart because you know bar charts, not because a bar chart answers the question. - Skipping the chart-type decision entirely — letting matplotlib's defaults choose.

Step 4 (Paper sketch) failures: - Skipping the sketch — going straight to code and inheriting defaults. - Sketching without specifics — drawing a box labeled "chart" rather than actual axes, labels, and proportions. - Not considering alternatives — sketching one option rather than comparing two or three. - Treating the sketch as precious — reluctance to discard it when critique reveals problems.

Step 5 (Prototype) failures: - Over-polishing before evaluating — spending an hour on typography before you know if the chart is right. - Starting from scratch instead of adapting an existing snippet — reinventing common patterns. - Premature optimization — worrying about performance on the first pass. - Not running the code — writing code that looks right without actually executing it.

Step 6 (Critique) failures: - Skipping critique entirely — "it looks fine, ship it." - Self-critique without the rubric — relying on gut feeling instead of checking each item. - Ignoring friends' critiques — assuming you know better than the feedback. - Over-interpreting a single critic — one opinion is data; many opinions are signal.

Step 7 (Refine) failures: - Not iterating — one pass of critique is usually not enough. - Over-refining low-stakes charts — polishing an internal dashboard to publication quality. - Changing everything at once — making so many edits that you can't tell what worked. - Not knowing when to stop — endless polish without improvement.

Step 8 (Publish) failures: - Wrong format — PDF for a web-embedded chart, PNG for a print article, etc. - Wrong resolution — 72 DPI on a print chart. - Missing brand application — the chart ships in matplotlib default style. - No caption or context — the chart is published without the surrounding explanation. - Not saving the source code — chart is impossible to reproduce later. - Forgetting the archive — important charts are lost when the script is deleted or the server is decommissioned.

The common theme across all these failure modes is rushing. Each step takes a few minutes; skipping each step saves those few minutes; the cumulative savings feel substantial in the short term. But the downstream cost is much higher — a chart that misleads, a chart that gets rejected, a chart that requires rebuilding. Invest the time in the process; the savings in rework are larger than the investment.

33.14 A Worked Example: From Question to Published Chart

Let's walk through the full workflow with a specific example. This is the kind of exercise you should do for your own charts until the workflow becomes automatic.

The scenario: you are a data analyst at a company, and your manager asks: "How has our revenue grown compared to last year?"

Step 1: Question. The manager's question is too vague. Specific version: "What is the percentage growth in total monthly revenue for 2024 compared to 2023, and which months showed the largest deviation?" The audience is your manager and the leadership team. The question is testable (you can tell from the chart what the answer is).

Step 2: Data assessment. You pull the data from the warehouse. It's a DataFrame with columns date, revenue, product_line, region. About 50,000 rows. No missing data. Dates span 2022-01-01 to 2024-12-31. Revenue is in dollars. You group by month and sum, producing a monthly series for 2023 and 2024.

Step 3: Chart selection. The question is about change over time with a comparison to the previous year. Options: two side-by-side line charts, one chart with two lines (2023 and 2024 as separate series), one chart with a percentage-change bar chart. You pick "one chart with two lines" because it directly answers the question.

Step 4: Paper sketch. You sketch the chart: x-axis is month (Jan-Dec), y-axis is revenue in millions. Two lines: blue for 2024, gray for 2023. Title at top left, action title: "Revenue grew 15% year-over-year, led by Q3." Annotations mark the months with the largest differences. Aspect ratio is wide (10:4) to fit a slide or a report.

Step 5: Prototype. Five minutes of matplotlib code. Load the data, group by month, plot two lines. Use default styling for now. The prototype works on the first try — the data is clean.

Step 6: Critique. Apply the rubric:

  • Question answered? Yes, the two lines clearly show the comparison.
  • Data integrity? Yes, values match the source.
  • Chart type appropriate? Yes, two lines for year-over-year comparison.
  • Encoding appropriate? Color distinguishes years (blue for 2024, gray for 2023). Year is clear from the legend.
  • Readable? Default font is too small for a slide. Needs larger.
  • Accessible? Blue-gray is colorblind-safe. Text contrast is okay.
  • Title helpful? Current title is "Monthly Revenue" — needs action title.
  • Source disclosed? Missing — need to add.
  • Annotations helpful? No annotations yet — need to mark the biggest gap.
  • Clutter removed? Default gridlines are fine but could be lightened.

Issues to fix: font size, title, source, annotations, grid lightening.

Step 7: Refine. - Apply the brand style sheet — font size jumps up automatically. - Change title to "Revenue grew 15% year-over-year, led by Q3 surge." - Add ax.text() source attribution at the bottom right. - Use ax.annotate() to mark September (the biggest gap) with "+23% in September." - The style sheet already handles gridlines. - Re-critique: all rubric items pass.

Step 8: Publish. - Save as PNG at 300 DPI for a slide deck, and PDF at vector resolution for a printed report. - Embed in the "Revenue Review" slide with a caption: "Monthly revenue, 2023 vs 2024. Data source: Internal finance warehouse, as of 2024-12-31." - Email the slide deck to the leadership team. - Archive the Python script in version control with a timestamp tag.

Total time: about 45 minutes from question to published chart. Breakdown: 5 minutes for question and data assessment, 5 minutes for sketch and chart selection, 5 minutes for prototype, 10 minutes for critique, 15 minutes for refinement, 5 minutes for publication.

The 45 minutes is more than you would spend on a quick matplotlib call. But the resulting chart is publishable without rework, the stakeholder gets a clear answer, and the whole process is reproducible. Compare to the "fast" alternative: a chart produced in 10 minutes that requires 30 minutes of back-and-forth with the manager to fix, for a total of 40 minutes and a worse final result.

Scaling the workflow: for quick internal charts, some steps compress to seconds. "What's the question?" takes one sentence. "Chart type?" is intuitive after experience. But the steps are never fully skipped — they happen, just quickly. Mastering the workflow means the steps become automatic, not that they are omitted.

33.15 The Critique Session: Working with Others

Self-critique is valuable, but group critique is often better. A well-run critique session catches issues that any individual would miss. Here's how to structure one.

The setup: a small group (3-6 people), one presenter, one chart, 15-30 minutes. The presenter shows the chart and briefly explains the context. The group then applies the rubric and discusses.

Rules for presenters: - Don't defend the chart during the critique. Listen, take notes, and save responses for the end. - Don't apologize for the chart. Don't say "I know it's not great yet." Let the chart speak for itself. - Be specific about what feedback you want. "I'm trying to decide between a bar chart and a slope chart — does the bar chart work?" is more useful than "is it okay?" - Thank the critics. Even harsh feedback is a gift.

Rules for critics: - Be specific. "The colors don't work" is less useful than "the red and green in the legend are indistinguishable for colorblind readers." - Be constructive. "What about a log scale?" is better than "the scale is wrong." - Separate description from evaluation. "The chart shows X, and I notice Y" before "I think the problem is Z." - Apply the rubric rigidly, even for items that seem obvious. - Remember the context. A dashboard critique is different from a journal figure critique.

Rules for moderators (if you have one): - Keep the session moving. One chart per slot. - Ensure everyone speaks. Some critics are shy; others dominate. - Summarize at the end. "The main issues were X, Y, Z. Next steps: fix X before publishing, consider Y, leave Z for later."

Frequency: aim for weekly critique sessions if you produce charts regularly. Monthly at minimum. The regular practice builds critique muscles and creates shared vocabulary across the team.

Going to the meeting prepared: bring the chart, the question, the target audience, and any specific feedback you want. A prepared presenter gets more useful feedback than an unprepared one.

A well-run critique session is one of the best investments a data team can make. It improves individual charts, it builds a shared aesthetic, and it creates accountability — you know that your work will be seen by peers before it goes out, which raises the baseline quality of everyone's output.

33.16 Integrating Everything: The Master Flowchart

As a final synthesis, here is a compact flowchart for the entire visualization process:

Question: What are you trying to answer?
   ↓
Data: What do you have? Check columns, types, ranges, quality.
   ↓
Chart type: Match to question. (Ch 5 decision tree)
   ↓
Sketch: Draw on paper. Consider 2-3 alternatives. (Ch 9 story)
   ↓
Prototype: Build quickly, matplotlib/seaborn/Plotly (Ch 10-22)
   ↓
Critique: Apply the rubric. (Ch 27, Ch 32 checklists)
   ↓
Refine: Fix rubric failures. Iterate.
   ↓
   (If critique reveals wrong chart type, go back to Chart type)
   ↓
Publish: Format, DPI, brand, distribute. (Ch 29-32)
   ↓
Archive: Save source, data, metadata.

The flowchart is simple, but applying it consistently requires discipline. Most visualization practitioners know the steps; few apply them every time. The ones who do produce better work than the ones who don't, and the difference compounds over time.

A concrete habit: after every chart you produce, write down which steps you followed and which you skipped. Review the list weekly. If the same step keeps getting skipped, make it a priority for the next chart. Over a few months, your consistency improves, and so does your output.

33.17 A Personal Reflection: The Book's Arc

This is the penultimate chapter of the book. It is a good place to reflect on the arc we have traveled.

Part I (Seeing Data, Chapters 1-5) established the foundations: why visualization matters, how human perception works, how color systems operate, how to avoid lies, how to choose the right chart for a question. These chapters are about theory and design judgment — the skills that do not depend on any specific tool.

Part II (Design Principles, Chapters 6-9) applied the foundations to chart design: the data-ink ratio, typography, layout, storytelling. These chapters taught you to think about charts as communication, not just visualization.

Part III (matplotlib, Chapters 10-15) introduced the foundational Python library. matplotlib is verbose but flexible, and it underlies most of the ecosystem. Mastering matplotlib is the biggest single investment you can make in Python visualization.

Part IV (seaborn, Chapters 16-19) added a higher-level statistical visualization library. seaborn is a convenience layer over matplotlib and a gateway to the grammar-of-graphics approach.

Part V (Interactive, Chapters 20-24) introduced interactive visualization with Plotly, Altair, geospatial, and network tools. Interactive charts are the standard for modern web delivery.

Part VI (Specialized Domains, Chapters 25-28) covered specific data types: time series, text, scientific figures, big data. Each domain has its own conventions and pitfalls.

Part VII (Dashboards and Production, Chapters 29-33) moved from individual charts to full interactive applications and automated reports. This is where data visualization meets software engineering.

Part VIII (Capstone and Gallery, Chapters 34-35) will integrate everything into end-to-end projects.

The arc is intentional. Part I teaches you to see. Parts II-VII teach you to make. Part VIII teaches you to ship. The skills are cumulative: you cannot make good charts without understanding perception; you cannot ship good dashboards without understanding charts.

The 8-step workflow in this chapter is the practical expression of the whole arc. Each step draws on material from multiple parts of the book. Question and audience analysis draw on Chapter 9. Chart selection draws on Chapter 5. Sketching and design draw on Chapters 6-8. Prototyping draws on Chapters 10-22. Critique draws on Chapter 27 and Chapter 32. Publishing draws on Chapters 29-32. The workflow is the connective tissue that holds the book together.

If you take one thing from this book, let it be the workflow. The specific libraries will change — matplotlib will be replaced by something better in ten years, and so will Plotly and Dash. The perception principles will not. The chart selection principles will not. The workflow will not. Techniques are perishable; process is permanent.

33.18 What the Workflow Does Not Guarantee

Following the workflow is necessary but not sufficient. A few things the workflow does not automatically produce:

Creativity. The workflow tells you to sketch, critique, and refine, but it does not tell you to have good ideas. Creativity comes from domain knowledge, practice, and exposure to good work. The workflow channels creativity; it does not generate it.

Domain expertise. Visualization is a medium for communicating domain knowledge. Without knowing your domain — finance, biology, sports, whatever — your visualizations will be technically correct but analytically shallow. The workflow assumes domain expertise; it does not replace it.

Good data. Garbage in, garbage out. The workflow cannot fix bad data, only reveal it in Step 2. If your data is missing, biased, or wrong, no workflow will save the chart.

Audience attention. A beautifully-produced chart in an inbox that nobody reads still accomplishes nothing. The workflow produces good charts; distribution and audience engagement are separate problems.

Organizational politics. Some charts will be rejected, censored, or ignored for reasons that have nothing to do with quality. The workflow cannot fix stakeholder dynamics.

Good judgment. The workflow provides structure for judgment, but you still have to exercise judgment. "Is this chart honest? Is the story fair? Am I overstating the conclusion?" These questions are not answered by the rubric; they require ethical and professional judgment that develops with experience.

Acknowledging these limits is not defeatist. It is realistic. The workflow is a strong tool, but it operates in a context — a context that includes your own skill, your domain knowledge, your data, your audience, and your organization. Invest in all of these, and the workflow's outputs improve. Neglect any of them, and the workflow alone cannot compensate.

The lesson: treat the workflow as infrastructure for good visualization, not a replacement for the practitioner behind it. The practitioner still matters most. The workflow makes the practitioner more productive, more consistent, and more reliable. But it does not replace them.

33.19 Check Your Understanding

  1. What is the chapter's threshold concept?
  2. Name the 8 steps of the workflow in order.
  3. Why is the paper sketch before coding?
  4. What are 3 items on the critique rubric?
  5. When should you stop refining a chart?
  6. What does "publish" mean as a workflow step?
  7. What is in a personal visualization toolkit?
  8. How does the workflow prevent common failure modes?

33.20 Chapter Summary

This chapter integrated the book's material into a coherent 8-step workflow:

  1. Question: specific, answerable, audience-aligned, testable.
  2. Data assessment: columns, types, ranges, quality, provenance.
  3. Chart selection: match question type to chart type.
  4. Paper sketch: design before code.
  5. Prototype: speed over quality.
  6. Critique: structured rubric, not gut feeling.
  7. Refine: iterate, know when to stop.
  8. Publish: format, brand, checklist, distribute.

The threshold concept — process over product — argues that the quality of a visualization is determined by the process that produced it. Technical skill matters, but a disciplined process matters more. The workflow is the skill.

A personal visualization toolkit makes the workflow faster and more consistent: known libraries, style sheets, helper modules, checklists, reference materials. The toolkit is the physical embodiment of the practice.

Chapter 34 is the capstone project for the whole book: a complete end-to-end data story using every skill developed so far.

33.21 Spaced Review

  • From Chapter 9 (Storytelling): how does the 8-step workflow relate to Chapter 9's narrative structure?
  • From Chapter 5 (Choosing the Right Chart): Step 3 (chart selection) applies Chapter 5's decision framework. How does the question-first approach differ from a chart-first approach?
  • From Chapter 27 (Statistical/Scientific): the journal submission checklist is a specialized critique rubric. How does this chapter's rubric compare?
  • From Chapter 32 (Theming and Branding): the "publish" step assumes a brand system is in place. How does the workflow change if no brand system exists?
  • From Chapter 4 (Honest Charts): ethical compliance is part of the critique rubric. Why is it a separate category rather than embedded in data integrity?

The 8-step workflow is the book's practical climax. Every chapter before this one was setup — specific techniques and tools that serve specific steps of the workflow. From this point forward in your career, you have both the technical knowledge and the process to produce good visualizations consistently. Chapter 34 is the capstone project where you apply the complete 8-step workflow to a full data story, and Chapter 35 is the gallery of reference examples illustrating the full range of techniques the book has covered. The workflow is the thread that ties every chapter and every specific technique together, and internalizing it is the single most valuable takeaway from this entire textbook. Technical skills will age and libraries will be replaced, but the discipline of process — question, data, chart, sketch, prototype, critique, refine, publish — will serve you for your whole career. The individual tools and libraries are interchangeable; the workflow itself is not. That is why this chapter, more than any other chapter, is what you should internalize most deeply from the book before moving on to the capstone project and reference gallery in Part VIII.