ggCheysson 1.2.0
New features
Experimental: each element of each pattern palette is now a ggpattern pattern of its own, a swatch, named
"<palette>-<element>"(e.g."1886_28-1"), that draws its fill, hatch type, line colors and angle together. A whole color-and-pattern palette then needs onlyaes(pattern = x)and a pattern scale, e.g.scale_pattern_manual(values = paste0("1886_28-", 1:6)): noaes_cheysson(), and nopattern_spacing/pattern_densityarguments. The swatches are registered when gridpattern loads, withgridpattern::register_pattern()where available. What settingpattern_spacing/pattern_densitymeans depends on the ggpattern version; see?cheysson_swatches.The swatches of a palette keep the relative line spacings measured on Cheysson’s plates, so e.g. the hatching of sequential palette
1888_27gets denser at each step.pattern_spacingsets the spacing of a palette’s typical swatch, and the others keep their proportions. The literacy map in the Guerry maps vignette now usesscale_cheysson()instead of mappingpattern_spacingwithscale_pattern_spacing_manual().New
show_swatches()draws an atlas of the swatches: one row per palette and one column per element, grouped by palette type, so a swatch’s name reads off its row and column. It is shown in the README.Experimental
scale_cheysson()is now a single discrete scale for thepatternaesthetic that gives each level a swatch, so a palette needs onlyaes(pattern = x) + geom_col_pattern() + scale_cheysson("1886_28"). It used to return five scales, one per pattern aesthetic. Itsaestheticsargument is ignored, with a warning; to use only some of a palette’s properties, use the individualscale_*_cheysson()scales.na.valueis now a pattern (default"none", which shows the geom’s ownfill) rather than a color.aes_cheysson(x)is deprecated and now the same asaes(pattern = x), so existing code using both keeps working. The “Combining Colors and Patterns” vignette is updated.The package’s discrete scales no longer pass
scale_nametoggplot2::discrete_scale()with ggplot2 3.5.0 or later, where it is deprecated.
Bug fixes
The palette functions and scales (
cheysson_pal(),cheysson_pattern(),scale_fill_cheysson(),scale_cheysson(), etc.) andcheysson_name()failed with “object ‘cheysson_palettes’ not found” (or'cheysson_patterns','cheysson_labels') unless ggCheysson was attached withlibrary(), e.g. when called asggCheysson::scale_fill_cheysson()or from another package. They now find the palette data either way.cheysson_pattern_params()used%||%, which base R has only from 4.4.0, so it failed on the earlier R versions the package supports (R >= 3.5). The package now has its own.
ggCheysson 1.1.0
CRAN release: 2026-10-01
Breaking changes
Fixed a palette-naming collision bug. Palette names were built from
Album + Qty(e.g."1880_07"), butQtyis not a unique plate identifier - it’s a colors/pattern-element count that happened to repeat across genuinely different plates. 4 such collisions silently overwrote 5 of the original 25 palettes during data extraction. Names are now built from the real, unique plate identifier (RumseyListNo’s decimal suffix) instead: 19 of the 20 previously-shipped palettes have a new name, and all 5 previously-missing palettes are now included -cheysson_palettes/cheysson_patternsnow have 25 palettes (was 20), with 134 pattern specifications (was 83). See the newcheysson_labelsdataset (below) to map an old name to its new one.Migration aids for the rename: an old (1.0.1) palette name that no longer exists now errors with the palette’s new name, e.g.
"1883_06"->"1883_30", instead of just “not found”. Watch out for"1880_07": it is still a valid name, but now refers to a different palette (grouped, 1880 plate 7). The palette called"1880_07"in 1.0.1 is now"1880_21". Using"1880_07"gives a once-per-session message saying so. ("1906_06"is the only old name that still means the same palette.)Palette order is now consistent: sequential palettes are stored from low to high (light to dark) and diverging palettes end to end, so
reverse = TRUEmeans the same for every palette. Previously palettes kept RJ Andrews’ swatch order, so1891_19,1891_25and1900_28ran dark to light, and1883_31put its hatched patterns at the extremes; these are now reordered. Category and grouped palettes are unchanged.When a sequential or diverging palette has more elements than needed,
cheysson_pal(n = ),cheysson_pattern(n = )and all thescale_*_cheysson()scales now pick elements spread over the whole palette, keeping both ends, instead of the firstn- which could drop one end of a diverging palette entirely (e.g.1883_21with 5 classes).
New features
New (experimental)
scale_cheysson()applies a whole color-and-pattern palette - fill, hatch type, line colors and angle - with one+, in place of four or five separatescale_*_cheysson()calls;aes_cheysson(x)maps a variable to all of those aesthetics. See the new vignette “Combining Colors and Patterns”. The individual scales remain.Two-color crosshatches: the crosshatches in
1883_30and1886_17draw their two sets of lines in different colors (red and blue; orange and blue-grey). These are now stored aspattern_fill2, returned bycheysson_pattern_params(param = "pattern_fill2"), and applied by the newscale_pattern_fill2_cheysson(); map ggpattern’spattern_fill2aesthetic to use them.Added
cheysson_labels, a new dataset mapping every palette’s current name to its previous (pre-fix) name, RJ Andrews’ original Advent-calendar label, Tom Shanley’s Observable notebook ID, and the underlying David Rumsey catalog number - useful for looking up a palette by whichever naming scheme you encountered it in.Added
cheysson_name(), a lookup function that translates a palette label from any of thecheysson_labelsnaming schemes (Andrews’ label, Shanley’s ID, a Rumsey catalog number, the old pre-fix name, or an advent day) into the current palette name, for direct use in calls likescale_color_cheysson(cheysson_name("Dec.01-1883.21")). When a label is ambiguous (only possible via the old naming scheme, which had 4 real collisions), it warns and lists every match; passadvent_dayto disambiguate without a warning, or to assert a specific palette.
Bug fixes
Vignettes now render figures with
ragg. This fixes a segfault on CRAN’s Intel macOS check machines, where the Quartzpng()device crashes drawing ggpattern’s masks. Also, setfig.showtext = TRUE, so showtext text is drawn at the device’s real dpi and figures look the same in the package vignettes and on the pkgdown site.Missing values in a mapped pattern aesthetic no longer make ggpattern fail: the pattern scales now give missing data no hatching (
pattern = "none") by default.The 1883 category palette of Advent day 22 is named
1883_30: the source data’s Rumsey number for it (12512.013) was a typo for12514.030, the 1883 album’s plate 30, as checked against the original plate.cheysson_labelskeeps RJ Andrews’ and Tom Shanley’s labels for it (Dec.22-1881.13,category12512013), which were built from the bad number.Fixed 15 missing pattern elements across 6 palettes (
1882_04,1883_07,1886_04,1886_07,1887_06,1900_06, in their old names): an SVG-parsing bug silently dropped hatch-line patterns whose coordinates relied on SVG’s implicit default of 0 for an omittedx1/y1/x2/y2attribute.Fixed two
scale_pattern_*_cheysson()bugs:scale_pattern_type_cheysson()targeted the wrong ggpattern aesthetic (pattern_typeinstead ofpattern) and so never actually varied the rendered pattern shape by category;scale_pattern_fill_cheysson()read the wrong parameter (fillinstead ofpattern_fill) and always returned"transparent"regardless of palette.Fixed
theme_cheysson()’s/theme_cheysson_map()’splot.title(set inCheyssonTitle) rendering smaller than intended, the same underlying issue as the 1.0.1 axis/legend-title fix below but previously missed for the plot title itself. The correction is now generalized (cheysson_font_size_adjust()) to all four Cheysson display fonts instead of hardcoded to one.
Other changes
The help topic for
scale_color_cheysson()/scale_fill_cheysson()is now?scale_color_cheysson(the namescale_cheyssonbelongs to the new function).Added real (rendered) pattern examples to the README’s Pattern Support section, which previously had none.
theme_cheysson_map()text sizing redesigned:plot.title,plot.subtitle,legend.title, andlegend.textnow scale frombase_sizeusing a deliberate poster-style hierarchy (a much larger title relative to the rest, in the spirit of Guerry’s own maps) instead of the modest ratiostheme_cheysson()uses;plot.captionis now styled too (previously unstyled and tiny).base_sizealone now controls this - no need for thetheme(plot.title = element_text(size = ...))overrides theguerry-mapsvignette previously needed on every map. Sizes are calibrated at true scale (a ~40-character title just fits an 8in-wide figure), and titles are now centered on the whole plot rather than the panel, so a side legend no longer pushes a long title off the left edge.
ggCheysson 1.0.1
CRAN release: 2026-09-26
Fixed undersized axis and legend titles in
theme_cheysson()(inherited bytheme_cheysson_minimal()):CheyssonSansCapsrenders visibly smaller than other package fonts at the same nominal size, so title text is now scaled up to matchBumped
roxygen2to 8.1.0 (Config/roxygen2/version)Removed unnecessary
\dontrun{}/\donttest{}wrapping from examples that run cleanly (show_palette(),show_palettes(), thescale_*_cheysson()family); kept\donttest{}only where custom-font grid text rendering can crash on some devicesAdded R-universe badge and installation instructions to README
Hardened
cheysson_fonts_available(),cheysson_pal(), andcheysson_pattern()against non-length-1 arguments (method,n) that could otherwise trigger opaque errors
ggCheysson 1.0.0
- Initial version, implementing Cheysson color palettes, patterns and fonts
- Fixed problem with fonts, requiring
showtext::showtext_auto() - Added Getting started vignette
- Added Guerry maps vignette
- Added
show_palette()functions - Fixed problems from the initial CRAN submission:
-
@returntags for all functions -
list_cheysson_fonts()function converted tocheysson_fontsdata object -
\dontrun{}examples unwrapped, or changed to\donttest{}if they depend on system features
-
