Group Activity: White Hat / Black Hat
A misleading chart rarely contains a false number. It misleads through design choices that each look defensible on their own, such as where the axis starts, which years are shown, whether values are totals or per person, and what the title says. The fastest way to learn to spot those choices is to make them yourself. In this activity, your group will take one real dataset and one question and build two charts. The white hat chart answers the question as honestly and clearly as you can. The black hat chart pushes the reader toward a conclusion the data does not support, while every number in it stays true.
Instructions
- Form a group of 2–4 people.
- Choose a dataset from the list below, or another real dataset if you state its source. Agree on one question that both charts will address.
- Build a white hat chart that answers the question as honestly and clearly as you can.
- Build a black hat chart from the same dataset, for the same question, following the rules below.
- Do not label your charts as white hat or black hat. The next phase of this activity depends on your classmates trying to detect which is which, so nothing in the chart titles, captions, annotations, or image file names should give it away.
- Export both charts as images and submit them using the Google Form on the course website. One submission per group, with everyone’s names included.
Rules for the black hat chart
- Every number shown must be true. You may not fabricate, alter, or mislabel data. The axis labels, the units, and the source line must be accurate.
- The deception must come from design. Examples include axis range and baseline, aspect ratio, time window, aggregation or binning, totals versus rates, dual axes, choice of comparison group, color, area or 3D effects, sort order, annotation, and the title.
- Have a target. Decide the specific false or exaggerated conclusion the reader should walk away with, and design toward it.
- Make it plausible. The best black hat chart could run in a news article or a company report without anyone objecting. If it looks like an obvious trick, it has failed.
The white hat chart uses the same dataset and answers the same question. It should be the chart you would defend to a skeptical reviewer.
Tools
Use anything: an agent, Vega-Lite, Python, a spreadsheet, or a mix. Agents are allowed and expected. Some agents will warn about, soften, or refuse a request for a misleading chart. If yours does, note what it did and how you worked around it. That is useful evidence of how agents handle this kind of request.
Datasets
All files are small, clean CSVs with one row per observation. Download all (zip). You may also use another real dataset if you state its source.
| Dataset | Rows | Range | Columns | Source |
|---|---|---|---|---|
| Global temperature anomaly | 146 | 1880–2025, annual | year, anomaly_c (°C relative to 1951–1980) | NASA GISTEMP v4 |
| Atmospheric CO₂, Mauna Loa | 823 | 1958–2026, monthly | year, month, co2_ppm, co2_ppm_deseasonalized | NOAA GML |
| CO₂ emissions by country | 15,270 | 1950–2024, annual, 215 countries | country, iso_code, year, population, co2_million_tonnes, co2_tonnes_per_capita, share_of_global_co2_pct | Our World in Data |
| U.S. electricity by source | 339 | 1985–2025, annual | year, source (coal, gas, oil, nuclear, hydro, wind, solar, biofuel, other renewable), generation_twh | Our World in Data |
| U.S. unemployment rate | 945 | 1948–2026, monthly | date, unemployment_rate_pct | FRED, UNRATE |
| U.S. unemployment by industry | 1,708 | 2000–2010, monthly, 14 industries | industry, year, month, unemployed_thousands, unemployment_rate_pct | vega-datasets (U.S. Bureau of Labor Statistics) |
| U.S. gas prices | 1,881 | 1990–2026, weekly | date, price_usd_per_gallon (regular, nominal dollars) | FRED, GASREGW |
| Gapminder | 682 | 1955–2005, every 5 years, 62 countries | country, year, population, life_expectancy, fertility | vega-datasets (Gapminder) |
| Natural disaster deaths | 803 | 1900–2017, annual, by type | disaster_type (includes an “All natural disasters” total), year, deaths | vega-datasets (Our World in Data / EM-DAT) |
| Seattle weather | 1,461 | 2012–2015, daily | date, precipitation_mm, temp_max_c, temp_min_c, wind_m_per_s, weather | vega-datasets (NOAA) |
| Great Salt Lake level | 179 | 1847–2025, annual | year, mean/min/max_elevation_ft, num_readings (few per year before 1989) | USGS 10010000 |
| Utah air quality by county | 368 | 2000–2025, annual, 18 counties | county, year, days_with_aqi, days in each AQI category, max_aqi, median_aqi, days_ozone, days_pm25 | EPA AirData |
| Utah bachelor’s colleges | 13 | most recent cohorts | name, city, control, undergrad_enrollment, admission_rate, avg_annual_cost_usd, completion_rate_6yr, median_debt_at_graduation_usd, median_earnings_10yr_usd | College Scorecard |