{"id":35614593,"url":"https://friendly.github.io/ggCheysson/","last_synced_at":"2026-01-10T21:01:17.357Z","repository":{"id":203154451,"uuid":"708902693","full_name":"friendly/ggCheysson","owner":"friendly","description":"Graphic styles of Emile Cheysson for ggplot2. Implements stylistic elements (fonts, hachure patterns, color palettes) used by Emile   Cheysson in the Albums de Statistique Graphique, sometimes called the pinacle of the   Golden Age of Statistical Graphics.","archived":false,"fork":false,"pushed_at":"2026-01-01T17:36:44.000Z","size":30466,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-02T04:36:16.643Z","etag":null,"topics":["data-visualization","historical"],"latest_commit_sha":null,"homepage":"https://friendly.github.io/ggCheysson/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/friendly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-10-23T16:02:33.000Z","updated_at":"2026-01-01T17:36:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"f319c474-a0f8-4f8e-bc3f-a78933b5cb23","html_url":"https://github.com/friendly/ggCheysson","commit_stats":null,"previous_names":["friendly/ggcheysson"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/friendly/ggCheysson","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/friendly%2FggCheysson","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/friendly%2FggCheysson/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/friendly%2FggCheysson/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/friendly%2FggCheysson/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/friendly","download_url":"https://codeload.github.com/friendly/ggCheysson/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/friendly%2FggCheysson/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28258096,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2026-01-10T02:00:06.867Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-visualization","historical"],"created_at":"2026-01-05T05:00:47.405Z","updated_at":"2026-01-10T21:01:17.318Z","avatar_url":"https://github.com/friendly.png","language":"R","funding_links":[],"categories":["Themes and aesthetics"],"sub_categories":[],"readme":"\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n\u003c!-- badges: start --\u003e\n\n[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/ggCheysson)](https://cran.r-project.org/package=ggCheysson)\n[![Last\nCommit](https://img.shields.io/github/last-commit/friendly/ggCheysson)](https://github.com/friendly/ggCheysson)\n[![Lifecycle:\nexperimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental)\n\u003c!-- badges: end --\u003e\n\n# ggCheysson \u003cimg src=\"man/figures/logo.png\" height=\"200\" style=\"float:right; height:200px;\"/\u003e\n\nThe `ggCheysson` package brings the graphical styles of the *Albums de\nStatistique Graphique* to R and ggplot2.\n\nThe *Albums* were produced by the Ministry of Public Works in France\nunder the direction of [Émile\nCheysson](https://en.wikipedia.org/wiki/%C3%89mile_Cheysson) from\n1879-1897. They represent the “pinnacle of the Golden Age of Statistical\nGraphics” (Friendly, 2008) for their innovation in visualization\ntechniques, graphic design and beauty.\n\nThe package is based on work by:\n\n- David Rumsey Map Collection: Complete digitized *Albums de Statistique\n  Graphique* [View\n  collection](https://www.davidrumsey.com/luna/servlet/view/search?q=album+de+statistique)\n- RJ Andrews: [Classic Map Color\n  Design](https://infowetrust.com/project/album-colors) \\|\n  [GitHub](https://github.com/infowetrust/albumcolors)\n- Tom Shanley: Observable implementation [Cheysson Color\n  Palettes](https://observablehq.com/@tomshanley/cheysson-color-palettes)\n- Kenneth Fields: Hand-drawn font family creation [The style of Émile\n  Cheysson](https://www.esri.com/arcgis-blog/products/arcgis-pro/mapping/the-style-of-emile-cheysson/)\n\n## Historical Context\n\nThe *Albums de Statistique Graphique* were published annually by\nFrance’s Ministry of Public Works, showcasing infrastructure statistics\nthrough innovative visualizations. Under Émile Cheysson’s direction,\nthese albums combined:\n\n- Sophisticated use of color to represent quantitative variables\n- Hatching patterns to differentiate categories and show density\n- Hand-lettered text with distinctive character\n- Clear hierarchical organization of information\n\nThis package preserves these design elements for modern statistical\ngraphics.\n\n## Installation\n\nInstall the development version from GitHub:\n\n``` r\n# install.packages(\"remotes\")\nremotes::install_github(\"friendly/ggCheysson\")\n```\n\n### Suggested Dependencies\n\nFor full functionality, install these packages:\n\n``` r\ninstall.packages(c(\"ggpattern\", \"systemfonts\"))\n```\n\n## Features\n\nThis package provides a complete aesthetic system for creating\nvisualizations in Cheysson’s distinctive style:\n\n### 🎨 Color Palettes\n\n- **20 authentic color palettes** extracted from the original Albums\n- Sequential, diverging, grouped, and categorical palette types\n- Named by album year and plate number (e.g., `1880_07`, `1881_03`)\n- Compatible with standard ggplot2 color scales\n\n### 📐 Hatching Patterns\n\n- **83 pattern specifications** including solid fills, stripes, and\n  crosshatching\n- Line angles (0°, 45°, 90°, 135°) matching historical diagrams\n- Variable densities and line widths\n- Full integration with\n  [ggpattern](https://coolbutuseless.github.io/package/ggpattern/)\n\n### ✍️ Authentic Fonts\n\n- **5 hand-drawn font families** replicating Cheysson’s lettering style\n- Regular, Italic, Sans Caps, Outline Caps, and Title variants\n- Automatic loading and integration with ggplot2 themes\n- Created by Kenneth Fields for historical accuracy\n\n### 🎭 Complete Themes\n\n- `theme_cheysson()` - Full period-appropriate theme\n- `theme_cheysson_minimal()` - Minimal grid variant\n- `theme_cheysson_map()` - Optimized for cartographic work\n\nThese were derived by RJ Andrews from a collection of 25 thematic maps\nacross the span of years in which the *Albums* were produced, shown\nbelow.\n\n\u003ccenter\u003e\n\n\u003cimg src=\"man/figures/maps.png\" width=400\u003e\n\u003c/center\u003e\n\nFrom these, he abstracted the following combinations of color and\npattern he thought characterized these maps:\n\n\u003ccenter\u003e\n\n\u003cimg src=\"man/figures/color-palettes.png\" width=600\u003e\n\u003c/center\u003e\n\n### Not Yet\n\nThis initial version of the package defines separate functions and\n`ggplot2` scales for color palettes and shading patterns. Their\ncombination into Cheysson “color - pattern” features is planned.\n\n## Quick Start\n\nHere are a few examples to get you started.\n\n### Basic Color Palette\n\nUse the color palette of the 1881 Album, plate 4\n\n``` r\nlibrary(ggplot2)\nlibrary(ggCheysson)\n\nggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +\n  geom_point(size = 3) +\n  scale_color_cheysson(\"1881_04\") +\n  labs(title = \"Iris Dataset\") +\n  theme_minimal()\n```\n\n\u003cimg src=\"man/figures/README-basic-palette-1.png\" width=\"100%\" /\u003e\n\n### With Fonts and Theme\n\n``` r\n# Load Cheysson fonts (once per session)\nload_cheysson_fonts(method = \"showtext\")\n# Enable showtext for rendering\nshowtext::showtext_auto()\n\nggplot(mtcars, aes(wt, mpg, color = factor(cyl))) +\n  geom_point(size = 3) +\n  scale_color_cheysson(\"1883_04\") +\n  labs(\n    title = \"Automobile Efficiency\",\n    subtitle = \"Weight vs Fuel Economy\",\n    x = \"Weight (1000 lbs)\",\n    y = \"Miles per Gallon\"\n  ) +\n  theme_cheysson()\n```\n\n\u003cimg src=\"man/figures/README-with-fonts-1.png\" width=\"100%\" /\u003e\n\n### Complete Cheysson Aesthetic (Colors + Patterns + Fonts)\n\n``` r\nlibrary(ggpattern)\n\ndata \u003c- data.frame(\n  category = LETTERS[1:4],\n  value = c(15, 23, 18, 20)\n)\n\nggplot(data, aes(category, value, fill = category)) +\n  geom_col_pattern(\n    aes(\n      pattern_type = category,\n      pattern_fill = category,\n      pattern_angle = category\n    ),\n    pattern = \"stripe\",\n    pattern_density = 0.35,\n    color = \"black\"\n  ) +\n  scale_fill_cheysson_pattern(\"1881_03\") +\n  scale_pattern_fill_cheysson(\"1881_03\") +\n  scale_pattern_type_cheysson(\"1881_03\") +\n  scale_pattern_angle_cheysson(\"1881_03\") +\n  labs(\n    title = \"Statistical Comparison\",\n    x = \"Category\",\n    y = \"Value\"\n  ) +\n  theme_cheysson() +\n  theme(legend.position = \"none\")\n```\n\n\u003cimg src=\"man/figures/README-complete-aesthetic-1.png\" width=\"100%\" /\u003e\n\n## Available Palettes\n\nView all available palettes:\n\n``` r\n# List all palettes\nlist_cheysson_pals()\n#\u003e       name       type album plate n_colors\n#\u003e 1  1880_07   category  1880     7        7\n#\u003e 2  1881_03 sequential  1881     3        1\n#\u003e 3  1881_04   category  1881     4        4\n#\u003e 4  1881_08    grouped  1881     8        5\n#\u003e 5  1882_04    grouped  1882     4        2\n#\u003e 6  1883_04  diverging  1883     4        2\n#\u003e 7  1883_06   category  1883     6        4\n#\u003e 8  1883_07  diverging  1883     7        3\n#\u003e 9  1886_04 sequential  1886     4        2\n#\u003e 10 1886_07   category  1886     7        3\n#\u003e 11 1886_08    grouped  1886     8        4\n#\u003e 12 1887_06    grouped  1887     6        2\n#\u003e 13 1888_05 sequential  1888     5        1\n#\u003e 14 1891_03    grouped  1891     3        2\n#\u003e 15 1891_06 sequential  1891     6        1\n#\u003e 16 1891_07 sequential  1891     7        2\n#\u003e 17 1895_04 sequential  1895     4        3\n#\u003e 18 1900_06 sequential  1900     6        2\n#\u003e 19 1906_04   category  1906     4        4\n#\u003e 20 1906_06   category  1906     6        6\n\n# List by type\nlist_cheysson_pals(\"sequential\")\n#\u003e      name       type album plate n_colors\n#\u003e 1 1881_03 sequential  1881     3        1\n#\u003e 2 1886_04 sequential  1886     4        2\n#\u003e 3 1888_05 sequential  1888     5        1\n#\u003e 4 1891_06 sequential  1891     6        1\n#\u003e 5 1891_07 sequential  1891     7        2\n#\u003e 6 1895_04 sequential  1895     4        3\n#\u003e 7 1900_06 sequential  1900     6        2\n```\n\n``` r\n# View palette colors\ncheysson_pal(\"1880_07\")\n#\u003e [1] \"#d9636c\" \"#869e80\" \"#dec367\" \"#85aab1\" \"#aea9a4\" \"#ed8238\" \"#ab90a4\"\n```\n\n### Visualizing Palettes\n\nUse `show_palette()` to display a palette with color swatches and hex\ncodes:\n\n``` r\n# Display a single palette with metadata\nshow_palette(\"1895_04\")\n```\n\n\u003cimg src=\"man/figures/README-show-palette-1.png\" width=\"100%\" /\u003e\n\n``` r\n# Display multiple palettes at once\nshow_palettes(c(\"1880_07\", \"1881_03\", \"1895_04\"))\n```\n\n\u003cimg src=\"man/figures/README-show-palette-multi-1.png\" width=\"100%\" /\u003e\u003cimg src=\"man/figures/README-show-palette-multi-2.png\" width=\"100%\" /\u003e\u003cimg src=\"man/figures/README-show-palette-multi-3.png\" width=\"100%\" /\u003e\n\n``` r\n# Display four palettes in a 2x2 grid\nshow_palettes(c(\"1880_07\", \"1881_03\", \"1895_04\", \"1906_06\"), ncol = 2)\n```\n\n\u003cimg src=\"man/figures/README-show-palette-grid-1.png\" width=\"100%\" /\u003e\u003cimg src=\"man/figures/README-show-palette-grid-2.png\" width=\"100%\" /\u003e\u003cimg src=\"man/figures/README-show-palette-grid-3.png\" width=\"100%\" /\u003e\u003cimg src=\"man/figures/README-show-palette-grid-4.png\" width=\"100%\" /\u003e\n\n``` r\n# Display all palettes of a specific type\nshow_palettes(\"category\")\n```\n\nPalette types:\n\n- **Sequential** (7 palettes): For ordered quantitative data\n- **Diverging** (2 palettes): For data with neutral midpoint\n- **Grouped** (5 palettes): For comparing related groups\n- **Category** (6 palettes): For categorical data\n\n## Pattern Support\n\nWith ggpattern, recreate the distinctive hatching styles:\n\n``` r\n# List available pattern palettes\nlist_cheysson_patterns()\n\n# Get pattern specifications\npatterns \u003c- cheysson_pattern(\"1881_03\")\n\n# Use in plots with pattern scales\nscale_pattern_fill_cheysson(\"1881_03\")\nscale_pattern_type_cheysson(\"1881_03\")\nscale_pattern_angle_cheysson(\"1881_03\")\n```\n\n## Font Families\n\nFive Cheysson font families are included:\n\n| Family                | Description    | Use               |\n|-----------------------|----------------|-------------------|\n| `Cheysson`            | Regular serif  | Body text, labels |\n| `CheyssonItalic`      | Italic variant | Emphasis          |\n| `CheyssonSansCaps`    | Sans capitals  | Axis titles       |\n| `CheyssonOutlineCaps` | Outlined caps  | Decorative titles |\n| `CheyssonTitle`       | Display font   | Main titles       |\n\nHere are some of these:\n\n\u003ccenter\u003e\n\n\u003cimg src=\"man/figures/fonts1.png\" height = 400\u003e\n\u003c/center\u003e\n\nTo use these:\n\n``` r\n# Load fonts\nload_cheysson_fonts(method = \"showtext\")\nshowtext::showtext_auto()\n\n# List available fonts\nlist_cheysson_fonts()\n\n# Use specific fonts\ntheme(\n  plot.title = element_text(family = \"CheyssonTitle\"),\n  axis.title = element_text(family = \"CheyssonSansCaps\"),\n  axis.text = element_text(family = \"Cheysson\")\n)\n```\n\n## Package Contents\n\n### Data\n\n- `cheysson_palettes` - Color palette specifications (20 palettes)\n- `cheysson_patterns` - Pattern/hatching specifications (83 patterns)\n- `albumImages` - Metadata linking palettes to original album plates\n\n### Color Functions\n\n- `cheysson_pal()` - Get colors from a palette\n- `scale_color_cheysson()` / `scale_fill_cheysson()` - ggplot2 color\n  scales\n- `list_cheysson_pals()` - List available palettes\n- `show_palette()` - Display a single palette with color swatches and\n  hex codes\n- `show_palettes()` - Display multiple palettes for comparison\n\n### Pattern Functions\n\n- `cheysson_pattern()` - Get pattern specifications\n- `scale_pattern_*_cheysson()` - ggpattern scales for fills, types,\n  angles, densities\n- `list_cheysson_patterns()` - List available pattern palettes\n\n### Font Functions\n\n- `load_cheysson_fonts()` - Load font families\n- `cheysson_font()` - Get font family names\n- `list_cheysson_fonts()` - View font information\n- `cheysson_fonts_available()` - Check font availability\n\n### Themes\n\n- `theme_cheysson()` - Complete Cheysson theme\n- `theme_cheysson_minimal()` - Minimal variant\n- `theme_cheysson_map()` - For maps\n\n## Sources and Attribution\n\n### Color Palettes and Patterns\n\n- **David Rumsey Map Collection**: Complete digitized *Albums de\n  Statistique Graphique* [View\n  collection](https://www.davidrumsey.com/luna/servlet/view/search?q=album+de+statistique)\n\n- **RJ Andrews**: SVG pattern extraction and digitization [Classic Map\n  Color Design](https://infowetrust.com/project/album-colors) \\|\n  [GitHub](https://github.com/infowetrust/albumcolors)\n\n- **Tom Shanley**: Observable implementation [Cheysson Color\n  Palettes](https://observablehq.com/@tomshanley/cheysson-color-palettes)\n\n### Fonts\n\n- **Kenneth Fields**: Hand-drawn font family creation [The style of\n  Émile\n  Cheysson](https://www.esri.com/arcgis-blog/products/arcgis-pro/mapping/the-style-of-emile-cheysson/)\n\n## Gallery\n\n\u003cimg src=\"man/figures/maps.png\" width=\"350\"\u003e\n\n*Original maps from the Albums showing the variety of colors and\npatterns*\n\n\u003cimg src=\"man/figures/RJ-Andrews-color-palettes.jpg\" width=\"600\"\u003e\n\n*Extracted color palettes by RJ Andrews*\n\n## Development Status\n\nThis package is under active development. Current features are stable\nand tested, but the API may evolve. Feedback and contributions are\nwelcome!\n\n## Related Packages\n\n- [ggpattern](https://coolbutuseless.github.io/package/ggpattern/) -\n  Pattern fills for ggplot2\n- [ggthemes](https://jrnold.github.io/ggthemes/) - Additional themes for\n  ggplot2\n- [systemfonts](https://github.com/r-lib/systemfonts) - Font handling\n  for R\n\n## License\n\nGPL (\\\u003e= 3)\n\n## Citation\n\nTo cite `ggCheysson`, please use:\n\n``` r\ncitation(\"ggCheysson\")\n#\u003e To cite package 'ggCheysson' in publications use:\n#\u003e \n#\u003e   Friendly M (2025). _ggCheysson: Graphic Styles of Emile Cheysson for\n#\u003e   ggplot2_. R package version 1.0.0,\n#\u003e   \u003chttps://github.com/friendly/ggCheysson\u003e.\n#\u003e \n#\u003e A BibTeX entry for LaTeX users is\n#\u003e \n#\u003e   @Manual{,\n#\u003e     title = {ggCheysson: Graphic Styles of Emile Cheysson for ggplot2},\n#\u003e     author = {Michael Friendly},\n#\u003e     year = {2025},\n#\u003e     note = {R package version 1.0.0},\n#\u003e     url = {https://github.com/friendly/ggCheysson},\n#\u003e   }\n```\n\nTo cite the original *Albums de Statistique Graphique*:\n\n\u003e France. Ministère des travaux publics. *Album de statistique graphique\n\u003e de \\[year\\]*. Paris: Imprimerie nationale, \\[1879-1897\\].\n\n## References\n\nFriendly, M. (2008). The Golden Age of Statistical Graphics.\n*Statistical Science*, **23**(4), 502–535.\n\u003chttps://doi.org/10.1214/08-STS268\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/friendly.github.io%2FggCheysson%2F","html_url":"https://awesome.ecosyste.ms/projects/friendly.github.io%2FggCheysson%2F","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/friendly.github.io%2FggCheysson%2F/lists"}