Changelog
Source:NEWS.md
ggside 0.4.0
CRAN release: 2025-09-13
Details/Breaking Changes
As ggplot2 prepares for its next major release, ggside will try to move in kind. Below is a running log of changes that are required due to ggplot2’s welcome changes to S7.
- Double dispatch on
S7::method(`+`, list(<ggside>, class_any))is now available throughggplot2, meaning we no longer need to overload+.ggfor our own purposes.-
ggsideno longer exports its own overload of+.gg. -
ggsidenow uses the recommened genericggplot2::update_ggplot()to control howggsideobjects are added to this object. - previously,
ggsidewould rely onNextMethod()to flexibly dispatch on otherggplot2subclasses. WithS7this is no longer easily done. For example,update_ggplot(object = <class_any>, plot = <class_ggside>)explicitly forces theplotargument to be dispatched as aclass_ggplotobject. This prevents possible multiple inheritance interactions withggsideand other extensions ofggplot2.
-
-
ggside(>= v0.4.0) will now depend onggplot2 (>= v4.0.0).
ggside 0.3.2
CRAN release: 2025-08-24
- This version will sync with
ggplot2(3.5.2). It fixing warnings when usingis.ggproto().ggsideNow usesis_ggproto()instead. Addresses issue #64 -
ggsidewill now depend on R (>= 4.1.0) as it already was doing so internally but not explicitly stated in the DESCRIPTION file. - Fixing Notes from cran regarding missing doc links.
ggside 0.3.0
CRAN release: 2024-02-26
Breaking Changes
- The following classes are no longer exported.
-
FacetSideNull,FacetSideGrid,FacetSideWrap -
ggplot2’s GeomCol and GeomBar now compute resolution based on panels, and not the entire data as a whole. This may affectggsideplots that use these variant geometries. Set thewidthparameter manually to retain old figures. -
ggsidenow depends onggplot2 (>3.5.0)as to make side positional scales work reliably, thelayerslot of theggplotobject needs to be extended and modified. This slot is only available in the latest version ofggplot2. Attempting to render aggsideobject whose Layout has not been subclassed byggsidemay lead to unexpected results. - with
ggplot2 (3.5.0), there is slightly more spacing between the y-axis title and the panels when the y-axis is plotted on the right side. This may be attributed to the new guide’s system. -
ggside’s adjacent side scales now operate independently (in support for issue #40, see details in updates section). For example, applyingscale_y_log10()on aggsideplot with axsidegeometry will NOT apply the transform to thexsideyscale. This is an experimental feature and is subject to change in the future ifggsidecan move to a more consistent set of expectations for the side scales.
Updates
- Using
coord_cartesian(xlim = <limits>, ylim = <limits>)will only apply to the main plotting scales and not side panel scales. For instance, usingp + coord_cartesian(xlim = c(0,1))wherepis a ggside object with a yside geometry will NOT set the limits on the ysidex scale. If the user wants to control the limits on the side scales, they should usescale_(x|y)side(y|x)_*()functions. Addresses issue #55 - The
ggside_optionsobject now inherits fromggprotoinstead of a list. - The
ggside_optionsdefaults arguments are nowNULL. This will help update the object appropriately without overriding previous options specified throughggside(). -
ggsidenow subclassesLayoutallowing for better control of how side scales are trained. This feature may be relatively unstable depending on the version ofggplot2installed. -
ggside_optionsobject now has a new argumentrespect_side_labelswhich will control spacing given between panels for their axes text labels. See?ggsidefor argument options. Note, if theme optionggside.panel.spacingis smaller than space required for labels, then priority is given to therespect_side_labelsoption untilggside.panel.spacingis greater. -
ggsidenow allows for thetransargument of thescale_(x|y)side(y|x)_continuous(...)functions to be used. Addresses issue #40. This feature is experimental and may be removed depending on howggplot2develops in the future. Additional helper functions have been added: - all
ggsideGeom ggproto objects have their aesthetics changed. For example,GeomXsidebar$required_aesis set toc("x", "xsidey")instead ofc("x", "y"). This is to ensure side panel’s respective axis generates its own default scale. With this change, users no longer need to preemptively provide ascale_(x|y)side(y|x)_*()function. - The following functions have been deprecated
-
as_ggsideFacet->ggside_facet -
as_ggsideCoord->ggside_coord
-
- Much of the syntax for creating a compatible
ggsidelayer has been wrapped intoggside_layer, which is similar toggplot2::layerexcept with an additional argumentside. This will allow users to attempt to make a compatibleggside_layerobject with custom Geom and Stat combinations. Ideally, the user should not have to modify the Geom or Stat directly, as this is handled by subclassing the Layer ggproto class directly. - many of the
ggsideinternals have been trimmed down for redundancy, resulting in a smaller package overall.
ggside 0.2.3
CRAN release: 2023-12-10
Updates
- fixes issue where
facet_grid(..., scales = "free/free_x/free_y")was not allowed with certainggside(collaps = "all/x/y"). This restriction makes sense withfacet_wrapbut notfacet_grid. Addresses issue #45 - fixes tests so
ggsideis compatible withscales (v1.3.0). - adding
clias a dependency - added
xsideandysidevariants forgeom_abline,geom_hlineandgeom_vline. Addresses issue #48
ggside 0.2.2
CRAN release: 2022-12-04
Updates
- The
ggside_optionsobject now inherits fromggprotoinstead of a list. - fixed issue where
facet_wrap(..., scales = "free/free_x/free_y")prevented the associatedscale_ysidex_*()/scale_xsidey_*()functions from plotting the guides. Addresses issue #35 -
ggsidenow provides an informative warning if the user provides free scales to facets but an incompatible argument toggside(collapse = ...). This warning will force the collapse parameter to something that will comply with the facet scales specification. -
ggsideshould be more resistant toggplot2’s updates to their default aesthetics.ggplot2 v3.4.0has included a new default aesthetic that has causedggsidegeoms to break. Addresses issue #36
ggside 0.2.1
CRAN release: 2022-07-20
Breaking change
Certain ggside geometries have the capabilities to use xfill/yfill or xcolour/ycolour in place of the normal fill and colour aesthetics. This was always meant to provide a separate aesthetic scale to color by. The earlier version of ggside failed to consider the case when fill/colour was specified in the global mapping, and the user passes a new data frame to the ggside layer that excludes the quoted column. This has been addressed with #28 where if xfill/yfill are specified, then the global fill aesthetic is ignored (as well for xcolour/ycolour and colour). This fix, however, has exposed a potential breaking change, meaning plots with the following characteristics may not be exactly the same as compared to earlier versions of ggside (< 0.2.1) :
-
fillorcolouris used in global mapping -
xfill/yfillorxcolour/ycolour(respectively) is used in aggsidelayer - both quoted columns for these aesthetics were available in whatever data given to the layer
How this would have worked in the past is that the computed mapping groups would be made on both aesthetics, but only filling or coloring by the ggside aesthetic. Now, the layer will only fill or color by the ggside aesthetic - potentially reducing the number of groups made by the plot.
Updates
-
ggside()gains astripargument, allowing forfacet_gridto plot strips on the main panels as opposed to the default of the side panels. Addresses issue #26 - fixed annoying warnings from plot scales when mixing discrete and continuous scales. Addresses issue #33
- added the following
geom_(x|y)side*variants -
stat_xsidefunction()andstat_ysidefunction()were added to accompanygeom_(x|y)sidefunction. This seemed to be a special case in which a stat variant was also needed. -
geom_abline(),geom_hline(), andgeom_vline()will no longer cause errors when used on aggsideobject that hasfacet_wrap()/facet_grid()in place. Addresses issue #3
ggside 0.2.0
CRAN release: 2021-12-11
- A set of new theme elements have been added to give users more control over how side panels are rendered. Please see
?ggside-themefor more details. Addresses Feature request #10. - To make way for this change,
ggsidenow also modifies theCoordobject. Currently onlyCoordCartesian,CoordFixedandCoordTransare supported forggside. - new arguments added to
ggside:draw_x_onanddraw_y_onwhich will allow the user to specify if the respective axis should be rendered on the main panel or the side panel.
ggside 0.1.3
CRAN release: 2021-10-24
- Properly imported
ggplot2::ggplot_add()intoggsidesuch thatggsidemethods were available toggplot2calls. Addresses issue #24. - Re-factored
XLayerandYLayerto rely less onggplot2internalLayerclass. Hopefully fixing issue users may experience betweenggplot2 (3.3.2)andggplot2 (3.3.5). Addresses issue #23.
ggside 0.1.2
CRAN release: 2021-07-21
- Fixed bug where additional messages were printed to the console when using
ggplot2::facet_wrap()orggplot2::facet_grid(). Addresses issue #20. - Fixed bug where
geom_xsidetext()was using the incorrectGeomparameter. Addresses issue #19.
ggside 0.1.1
CRAN release: 2021-07-20
- fixed bug in which
colour/color/fillappear in guides when used asparamsinstead of anaes()mapping. Now these aesthetics, and theirx/yvariants should behave likeggplot2API. Addresses issue #12. -
ggsideshould now work better with thepatchworkpackage. Addresses issue #13. - Fixed ‘bug’ in which computed aesthetics did not mix well with main panels of class
ContinuousScaleDate. Extended better control toXLayerandYLayerto pull scales from the proper panels instead of using the prototype scales onplot$scales. Addresses issue #11.
ggside 0.1.0
CRAN release: 2021-05-17
- Various
geom_*side*have better default calling behavior. Seevignettes("ggside_aes_mapping")for more details. - Added various functions to help customize side panels.
xsideywill affect the y-axis of the xside panel, andysidexwill affect the x-axis of the yside panel.scale_xsidey_continuousscale_xsidey_discretescale_ysidex_continuousscale_ysidex_discrete
- Using proper semantic versioning
- Added documentation examples for the following side geometries:
geom_*sidebargeom_*sideboxplotgeom_*sidecolgeom_*sidedensitygeom_*sidefreqpolygeom_*sidelinegeom_*sidepointgeom_*sidesegementgeom_*sidetilegeom_*sideviolin
- Corrected bug where
geom_*sideviolinwas not returningggside_layerclass - Updated
vignette(ggside_basic_usage)‘How its done’ section headers