Assignemnt 3: Pictogram Slides

Gabriel & Raphael

Pictogram / Icon Array: Data Aesthetics Mapping

A pictogram (icon array) is a chart where quantity is represented by repeating icons.

What types of data work best?

  • Categorical / ordinal groups (years, product type, region)
  • Simple numeric quantities (units sold, percent, index values)
  • Small data-sets (usually < 10 categories)

How data maps to chart aesthetics

library(tidyverse)

mapping <- tibble(
  Data_Type = c(
    "Category (nominal)",
    "Ordered category (ordinal)",
    "Quantity (numeric)",
    "Scale choice (design decision)",
    "Meaning / context (semantic)",
    "Optional emphasis"
  ),
  Chart_Aesthetic = c(
    "Row/column placement (y or x)",
    "Row order (top-to-bottom time order)",
    "Number of icons",
    "1 icon = fixed unit (ex: 10 million)",
    "Icon symbol (📱 = iPhones)",
    "Color / annotation / labels"
  )
)

mapping
# A tibble: 6 × 2
  Data_Type                      Chart_Aesthetic                       
  <chr>                          <chr>                                 
1 Category (nominal)             "Row/column placement (y or x)"       
2 Ordered category (ordinal)     "Row order (top-to-bottom time order)"
3 Quantity (numeric)             "Number of icons"                     
4 Scale choice (design decision) "1 icon = fixed unit (ex: 10 million)"
5 Meaning / context (semantic)   "Icon symbol (\U0001f4f1 = iPhones)"  
6 Optional emphasis              "Color / annotation / labels"         

Pictograms in the Wild

IBM Design Pictogram Library : Data Storage Organization

Source: https://www.ibm.com/design/language/iconography/pictograms/library/

GHS Hazard Pictograms (CIRS)

Source: https://www.cirs-group.com/en/chemicals/what-do-you-know-about-the-ghs-hazard-pictograms

iphone <- tibble(
  year = c("2007", "2010", "2015", "2020", "2023"),
  units_millions = c(1.3, 39.9, 231, 189, 223) # <-- replace with 10-K values
)

iphone_icons <- iphone |>
  mutate(n_icons = round(units_millions / 10)) |>
  uncount(n_icons) |>
  group_by(year) |>
  mutate(x = row_number())

ggplot(iphone_icons, aes(x = x, y = year)) +
  geom_text(label = "📱", size = 8) +
  labs(
    title = "iPhone Sales (Unit Sales, Apple 10-K)",
    subtitle = "Each 📱 ≈ 10 million iPhones sold"
  ) +
  theme_minimal(base_size = 16) +
  theme(
    panel.grid = element_blank(),
    axis.title = element_blank(),
    axis.text.x = element_blank(),
    axis.ticks.x = element_blank()
  )

Minimal Worked Example + GitHub Repo (iPhone Icon Array)

GitHub repo (commented code):
assignment3-pictograms

Source