Visualization VocabularyDataviz vocabulary
Diagram: tube map
Drawing: Adrien Taudière (CC0)
ggplot2 example: tube map
Adrien Taudière (CC0); R code ↓; data: Wikipedia, Rennes metro lines A and B (CC BY-SA 4.0)
Wikidata image: tube map
Sameboat (CC BY-SA 4.0); Wikimedia Commons; item Q2014543

Classification

  • chart
  • networks and trees › schematic networks
  • spatial
  • the name evokes: building

Channels

Scientific literature

OpenAlex: 338 papers since 1999, 26% in the last five years; mostly in Computer Science, Social Sciences, Arts and Humanities

Seminal references

R packages

R code of the ggplot2 example

library(ggplot2)
library(dplyr)

## The two lines of the Rennes metro, stations in order. Coordinates are
## schematic, not geographic: lines run only at 0, 45 and 90 degrees.
## `side` places each name: up or down (slanted), left or right.
line_a <- tribble(
  ~station, ~x, ~y, ~side,
  "J.F. Kennedy", 0, 3, "up",
  "Villejean-Université", 1, 3, "up",
  "Pontchaillou", 2, 3, "up",
  "Anatole France", 3, 3, "up",
  "Sainte-Anne", 4, 2, "left",
  "République", 4, 1.33, "left",
  "Charles de Gaulle", 4, 0.67, "left",
  "Gares", 4, 0, "right",
  "Jacques Cartier", 5, -1, "down",
  "Clemenceau", 6, -1, "down",
  "Henri Fréville", 7, -1, "down",
  "Italie", 8, -1, "down",
  "Triangle", 9, -1, "down",
  "Le Blosne", 10, -1, "down",
  "La Poterie", 11, -1, "down"
)
line_b <- tribble(
  ~station, ~x, ~y, ~side,
  "Saint-Jacques - Gaîté", 0, -1, "down",
  "La Courrouze", 0.8, -1, "down",
  "Cleunay", 1.6, -1, "down",
  "Mabilais", 2.6, 0, "up",
  "Colombier", 3.3, 0, "down",
  "Gares", 4, 0, "right",
  "Saint-Germain", 5, 1, "right",
  "Sainte-Anne", 4, 2, "left",
  "Jules Ferry", 5, 3, "up",
  "Gros-Chêne", 6, 3, "up",
  "Les Gayeulles", 7, 3, "up",
  "Joliot-Curie - Chateaubriand", 8, 3, "up",
  "Beaulieu - Université", 9, 3, "up",
  "Atalante", 10, 3, "up",
  "Cesson - Viasilva", 11, 3, "up"
)
stations <- bind_rows(line_a, line_b) |>
  add_count(station, name = "lines") |>
  distinct(station, .keep_all = TRUE) |>
  mutate(interchange = lines > 1)
label <- function(sides, dx, dy, ...) {
  geom_text(data = filter(stations, side %in% sides), aes(x = x + dx, y = y + dy, label = station),
            size = 2, colour = "#262626", ...)
}

p <- ggplot() +
  geom_path(data = line_a, aes(x = x, y = y), colour = "#9b2367", linewidth = 1.8, lineend = "round") +
  geom_path(data = line_b, aes(x = x, y = y), colour = "#2e7891", linewidth = 1.8, lineend = "round") +
  geom_point(data = filter(stations, !interchange), aes(x = x, y = y), colour = "white", size = 0.8) +
  geom_point(data = filter(stations, interchange), aes(x = x, y = y),
             shape = 21, fill = "white", colour = "#262626", stroke = 0.8, size = 2.4) +
  label("up", 0.08, 0.22, hjust = 0, angle = 40) +
  label("down", -0.08, -0.22, hjust = 1, angle = 40) +
  label("left", -0.22, 0, hjust = 1) +
  label("right", 0.22, 0, hjust = 0) +
  annotate("text", x = c(-0.3, -0.3), y = c(3, -1), label = c("Line a", "Line b"), hjust = 1,
           colour = c("#9b2367", "#2e7891"), fontface = "bold", size = 2.8) +
  coord_equal(xlim = c(-1.6, 12.2), ylim = c(-3.2, 5.2), clip = "off") +
  labs(title = "Lines a and b of the Rennes metro meet at two stations",
       subtitle = "Gares and Sainte-Anne, the interchanges (white circles)",
       x = NULL, y = NULL,
       caption = "Data: Wikipedia, Rennes metro lines A and B (CC BY-SA 4.0)") +
  theme_lex_viz(grid = "", arrows = "") +
  theme(axis.text = element_blank())

Sources (9)

29 occurrences in the corpus; indexed by 1 book

Cite this entry

Stable addresshttps://dataviz.adrientaudiere.com/en-only/term/tube-map.html

ReferenceTaudière Adrien. 2026. tube map. In Visualization Vocabulary, version 1.0.0. IdEst. https://dataviz.adrientaudiere.com/en-only/term/tube-map.html

BibTeX
@incollection{taudiere2026-tube-map,
  author    = {Taudière, Adrien},
  title     = {tube map},
  booktitle = {Visualization Vocabulary},
  year      = {2026},
  version   = {1.0.0},
  publisher = {IdEst},
  url       = {https://dataviz.adrientaudiere.com/en-only/term/tube-map.html},
  note      = {CC0 1.0}
}

Page created on 2026-10-13. Text last changed on 2026-11-02. Images last changed on 2026-11-11. Numbers computed on 2026-10-22.