graph palette now holds 9 colours rather than 10, since yellow no longer occupies two slots. make_grattan_pal_discrete() accepts n up to 9, and the deprecated grattan_pal() up to 9.theme_grattan(background = "box") and theme_grattan(background = "orange").grattan_save() gains a save_web argument, which writes a web-ready PNG using the “slide” font alongside your image. grattan_save_all() now sets it, so it produces web-ready PNGs of the normal, wholecolumn, fullpage and blog formats in addition to the existing outputs.lifecycle convention. Chart styles that are no longer supported are defunct, while those that are only partially supported are deprecated.save_chartdata() (and grattan_save(save_data = TRUE) / grattan_save_all()) now fail gracefully when the main ggplot() call carries no data because it was all supplied directly to the geoms. The data is recovered from the geom layers, with a warning; distinct data tables across geoms are written out as separate blocks. A chart with no data anywhere still errors as before.grattan_richlegend() now works on faceted charts. By default the legend is drawn only on the top-left panel; use facet = "all" to repeat it on every panel, or pass a numeric vector of panel numbers to choose specific panels. This also fixes a crash that previously occurred whenever grattan_richlegend() was combined with faceting.grattan_write_ai_guide() to cover grattan_richlegend() on faceted charts, and to suggest some preferred coding behaviour.create_fullslide() and create_blog() back to a transparent background so the grey title bar shows through, rather than sitting in a white box that clipped the chart title.grattan_richlegend(), an on-chart legend that places coloured labels at a chosen panel corner with a white background behind the text so it’s readable over gridlines. Inspired by ggdirectlabel::geom_richlegend(), in the no-border style of grattan_label().grattan_save_web(), a wrapper around grattan_save() that saves a PNG using the “slide” font (Avenir Next), without creating a PowerPoint or chart data."blog" chart type as an active, square (23.16cm x 23.16cm) format with a grey title bar, Grattan logo, subtitle, chart panel, and caption area. Assembly is handled by the new create_blog() function. type = "blog" is now included in type = "all" exports.create_fullslide() and create_blog(), rather than in grattan_save().create_fullslide() and create_blog() to render with a white background instead of a transparent one, as per the powerpoint formatting.grattan_save() now applies the slide font (Avenir Next) to non-fullslide chart types when font = "slide" is explicitly set.grattan_label_repel() border visibility caused by ggrepel switching from label.size to linewidth aesthetic for border control. Labels now explicitly set linewidth = 0 to suppress borders.grattan_write_ai_guide() function writes a style guide for AI coding assistants (Claude, Codex, Gemini) to your project directory.theme_grattan() now auto-detects horizontal/flipped charts and applies flipped = TRUE automatically. Detection triggers for coord_flip() and bar charts (discrete y + continuous x). A message is shown every 8 hours when auto-detection fires. Set flipped = TRUE explicitly to silence the message, or flipped = FALSE to opt out of auto-detection.check_chart_aspect_ratio() to check_chart().grattan_point_filled function signature for consistency with geom_point.export_latex_code for consistency with grattan_save_overleaf.save_chartdata function.grattan_save_overleaf function and associated utilities to identify and save charts to an Overleaf atlas.create_fullslide function to ensure .pdf outputs match Grattan’s current powerpoint template.grattan_scale functions to by default hide the zero label if the axis starts at zero.ragg for export of .png and .jpeg charts.grattan_save and grattan_save_pptx, including adding no_new_folder option to prevent creation of subfolders, setting cairo_pdf as the default device, and adding rich_subtitle option for preserving markdown formatting in PowerPoint exports. Powerpoint templates are also updated for consistency with internal Grattan templates.save_chartdata, including adding select_data option to remove extraneous columns from chartdata, and adding the round parameter to control decimal places in numeric data.grattan_fill_manual and grattan_fill_manual in favour of a different implementation of scale_fill_manual and scale_colour_manual
grDevices::colorRampPalette to make the lighter/darker permutationsgrattan_pal in favour of make_grattan_pal and make_grattan_pal_discrete
create_pptx_shell and create_slide_shell as officer now offers functionality to edit notes directlyhelvetica font choice as arial is now the standard font choicecheck_chart_aspect_ratio to help with checking charts are formatted correctlychart_types data frame is now exported, for contexts where it is useful to have information about the chart types in the grattantheme package.create_fullslide() and related functions.grattan_save_pptx(), including ‘blog’, ‘fullpage’, ‘normal’, ‘wholecolumn’.grattan_save_pptx() function - it would previously fail when title and/or subtitle was blank.grattan_label() reduced to 0.8grattan_save_pptx() saves a ggplot2 plot, or a list of plots, as a Powerpoint document with vector graphics and editable labels.grattan_save() gains an argument: save_pptx. When TRUE, it will use grattan_save_pptx() to also save your image as a Powerpoint document.make_slide() and make_presentation() have been deprecated.grattan_save(), save_data no longer automatically TRUE if type = "all"
create_fullslide() completely rewritten; now much more flexible + fasterwarn_labs argument to grattan_save() has been removedn up to 9