Skip to content
Development
Skill

/data-viz-storytelling-healy

Chọn đúng biểu đồ, kể chuyện với số liệu, và tránh误导 — dựa trên nguyên tắc từ Kieran Healy (Data Visualization, Princeton 2019) và taxonomy từ AntV chart-visualization-skills. Dùng khi cần quyết định loại chart, trình bày insight cho stakeholder, hoặc kiểm tra xem figure có gây

From plugin
awesome-agent-skill
26200 skills4 commands
Install
$ npx -y skills add charlieviettq/awesome-agent-skill --skill data-viz-storytelling-healy --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/data-viz-storytelling-healy

Context preview

The summary Claude sees to decide when to auto-load this skill.

Chọn đúng biểu đồ, kể chuyện với số liệu, và tránh误导 — dựa trên nguyên tắc từ Kieran Healy (Data Visualization, Princeton 2019) và taxonomy từ AntV chart-visualization-skills. Dùng khi cần quyết định loại chart, trình bày insight cho stakeholder, hoặc kiểm tra xem figure có gây

SKILL.md

data-viz-storytelling-healy.SKILL.md
name: data-viz-storytelling-healy
description: "Chọn đúng biểu đồ, kể chuyện với số liệu, và tránh误导 — dựa trên nguyên tắc từ Kieran Healy (Data Visualization, Princeton 2019) và taxonomy từ AntV chart-visualization-skills. Dùng khi cần quyết định loại chart, trình bày insight cho stakeholder, hoặc kiểm tra xem figure có gây hiểu lầm không. Để vẽ Python thực tế, chuyển sang matplotlib / seaborn / scientific-visualization."
allowed-tools: Read, Glob, Grep

Data Visualization & Storytelling (Healy + AntV)

> "The tools you use can help you live up to the right standards. > But they cannot make you do the right thing." > — Kieran Healy, *Data Visualization*, Ch. 1

When to Use This Skill

  • Deciding **which chart type** fits the analytical question
  • Writing a report or slide deck where **numbers need a narrative**
  • Reviewing a figure for **honesty / misleading patterns**
  • Drafting an insight summary with **claim → evidence → caveat** structure
  • Choosing between infographic (visual design) and statistical figure (accuracy)

**For actual plotting code** → use `matplotlib`, `seaborn`, or `scientific-visualization`.

---

Section 1 — Honesty & Judgment (Healy Ch. 1)

Before choosing colors or chart types, verify the figure does not mislead.

1.1 Pre-plot Honesty Checklist

| Check | Why it matters | |-------|----------------| | Baseline / zero start | Bar charts starting above zero exaggerate differences. Line charts may omit zero legitimately if the focus is trend, not level. | | Dual axes | Two Y-axes on one plot invite false correlation. Prefer faceted panels or indexed series. | | Cherry-picked window | Short time windows can hide long-term patterns. Always show context. | | Aggregation level | Averages can hide distribution shape. Consider showing raw data, box plots, or density. | | Proportional vs absolute | Normalize when comparing groups of different size; keep raw counts available. | | Color encoding | Do not use rainbow/palette that implies order for categorical data. Use colorblind-safe palettes. | | Uncertainty | Show CI, prediction bands, or error bars when presenting estimates. | | Axis labels & units | Every axis must state what it measures and in what unit. |

**Rule of thumb:** If removing context (time range, N, CI) changes the takeaway, the figure is misleading as-is.

1.2 Perception Principles (Healy Ch. 1 + Cleveland)

Humans perceive some encodings more accurately than others:

1. **Position on common scale** — most accurate (scatter, line) 2. **Position on different scale** — good (grouped bar, faceted) 3. **Length / direction** — moderate 4. **Angle / area** — poor (avoid pie charts for comparison) 5. **Color intensity / shape** — worst for magnitude; OK for categories

**Implication:** Prefer dot plots or bar charts over pie/bubble for quantitative comparison.

---

Section 2 — Chart Selection Rubric (AntV taxonomy → Python)

Ask: **"What is the analytical question?"** then pick the chart family.

| Question family | Chart types | Python (seaborn/matplotlib) | |-----------------|-------------|-----------------------------| | **Trend over time** | Line, area, step | `sns.lineplot`, `ax.plot`, `ax.fill_between` | | **Comparison (categories)** | Bar (grouped/stacked), lollipop | `sns.barplot`, `ax.barh` | | **Part-to-whole** | Stacked bar, waffle, pie (sparingly) | `ax.bar(stacked)`, avoid pie for >3 slices | | **Distribution** | Histogram, KDE, box, violin, ridgeline | `sns.histplot`, `sns.kdeplot`, `sns.boxplot`, `sns.violinplot` | | **Relationship (2+ vars)** | Scatter, bubble, hexbin, 2D density | `sns.scatterplot`, `ax.hexbin`, `sns.jointplot` | | **Ranking** | Lollipop, horizontal bar (sorted) | `ax.barh` (sorted) | | **Deviation / contrast** | Diverging bar, slope chart, dumbbell | Custom `ax.barh` with center baseline | | **Geography** | Choropleth, bubble map | `geopandas` + matplotlib; or Folium | | **Hierarchy / flow** | Treemap, sankey, dendrogram | `squarify`, `matplotlib-sankey` | | **Multi-variate summary** | Parallel coordinates, radar, heatmap | `pd.plotting.parallel_coordinates`, `sns.heatmap` | | **Model diagnostics** | Residual plot, calibration curve, lift/gains | `sns.residplot`, custom calibration, KS plot |

Decision Flow

1. How many variables?  → 1 (distribution) | 2 (relationship) | 3+ (multivariate)
2. Is there a time component?  → Yes: line/area trend
3. Am I comparing groups?  → Yes: bar/lollipop
4. Am I showing composition?  → Yes: stacked bar > pie
5. Am I showing uncertainty?  → Always add CI/bands
6. Audience?  → Expert: detail plot | Executive: annotated summary + callout

---

Section 3 — Building Plots Layer by Layer (Healy Ch. 3)

Healy teaches the **grammar of graphics**: data → mapping → geom → stat → coord → facet → theme.

Mapped to matplotlib/seaborn:

| Grammar layer | ggplot concept | matplotlib / seaborn equivalent | |---------------|----------------|--------------------------------| | Data | `ggplot(df)` | Pass DataFrame to seaborn or plot columns | | Aesthetic mapping | `aes(x=, y=, color=)` | `x=`, `y=`, `hue=` params in seaborn; manual in matplotlib | | Geometry | `geom_point`, `geom_line` | `ax.scatter`, `ax.plot`, `sns.scatterplot` | | Statistical transform | `stat_summary`, `geom_smooth` | `sns.regplot`, `sns.aggplot`-like via groupby + plot | | Coordinate system | `coord_flip`, `coord_polar` | `ax.invert_yaxis()`, projection='polar' | | Facet | `facet_wrap(~var)` | `sns.FacetGrid` / `sns.relplot(col=)` | | Theme / labels | `labs()`, `theme_minimal()` | `ax.set_title/labels`, spine removal, style sheets |

**Workflow in Python:**

import seaborn as sns
import matplotlib.pyplot as plt

# Layer 1: data + mapping + geom
g = sns.relplot(
    data=df,
    x="feature_date", y="default_rate",
    hue="segment", col="product",
    kind="line", facet_kws={"sharey": False}
)

# Layer 2: annotation
g.fig.suptitle("Default Rate Trend by Segment & Product", y=1.02)
g.set_axis_l
Read more
Ships withawesome-agent-skill

Curated skill pack for LLM agents in engineer and science workflow (Cursor & Claude ready).

Get the whole plugin

Other skills on awesome-agent-skill.