|
1 | 1 | # ggplot2 (development version)
|
| 2 | +This is a larger patch release fixing a huge number of bugs and introduces a |
| 3 | +small selection of feature refinements. |
2 | 4 |
|
3 |
| -* Manual scales now allow named vectors passed to `values` to contain fewer |
4 |
| - elements than existing in the data. Elements not present in values will be set |
5 |
| - to `NA` (@thomasp85, #3451) |
6 |
| - |
7 |
| -* Remove cross-inheritance of default discrete colour/fill scales and check the |
8 |
| - type and aesthetic of function output if `type` is a function |
9 |
| - (@thomasp85, #4149) |
| 5 | +## Features |
10 | 6 |
|
11 | 7 | * Add support for the BrailleR package for creating descriptions of the plot
|
12 | 8 | when rendered (@thomasp85, #4459)
|
| 9 | + |
| 10 | +* `coord_sf()` now has an argument `default_crs` that specifies the coordinate |
| 11 | + reference system (CRS) for non-sf layers and scale/coord limits. This argument |
| 12 | + defaults to the World Geodetic System 1984 (WGS84), which means x and y |
| 13 | + positions are interpreted as longitude and latitude. This is a potentially |
| 14 | + breaking change for users who use projected coordinates in non-sf layers or in |
| 15 | + limits. Setting `default_crs = NULL` recovers the old behavior. Further, |
| 16 | + authors of extension packages implementing `stat_sf()`-like functionality are |
| 17 | + encouraged to look at the source code of `stat_sf()`'s `compute_group()` |
| 18 | + function to see how to provide scale-limit hints to `coord_sf()` |
| 19 | + (@clauswilke, #3659). |
| 20 | + |
| 21 | +* `ggsave()` now uses ragg to render raster output if ragg is available. It also |
| 22 | + handles custom devices that sets a default unit (e.g. `ragg::agg_png`) |
| 23 | + correctly (@thomasp85, #4388) |
13 | 24 |
|
14 |
| -* Fix a bug in the layer implementation that introduced a new state after the |
15 |
| - first render which could lead to a different look when rendered the second |
16 |
| - time (@thomasp85, #4204) |
| 25 | +* `ggsave()` now returns the saved file location invisibly (#3379, @eliocamp). |
| 26 | + |
| 27 | +* The scale arguments `limits`, `breaks`, `minor_breaks`, `labels`, `rescaler` |
| 28 | + and `oob` now accept purrr style lambda notation (@teunbrand, #4427). The same |
| 29 | + is true for `as_labeller()` (and therefore also `labeller()`) |
| 30 | + (@netique, #4188). |
| 31 | + |
| 32 | +* Manual scales now allow named vectors passed to `values` to contain fewer |
| 33 | + elements than existing in the data. Elements not present in values will be set |
| 34 | + to `NA` (@thomasp85, #3451) |
17 | 35 |
|
18 |
| -* Make sure `label_bquote()` has access to the calling environment when |
19 |
| - evaluating the labels (@thomasp85, #4141) |
| 36 | +* Date and datetime position scales support out-of-bounds (oob) arguments to |
| 37 | + control how limits affect data outside those limits (@teunbrand, #4199). |
| 38 | + |
| 39 | +## Fixes |
| 40 | + |
| 41 | +* Fix a bug that `after_stat()` and `after_scale()` cannot refer to aesthetics |
| 42 | + if it's specified in the plot-global mapping (@yutannihilation, #4260). |
20 | 43 |
|
21 | 44 | * Fix bug in `annotate_logticks()` that would cause an error when used together
|
22 | 45 | with `coord_flip()` (@thomasp85, #3954)
|
23 | 46 |
|
24 |
| -* Fix a bug in `guide_bins()` where keys would disappear if the guide was |
25 |
| - reversed (@thomasp85, #4210) |
| 47 | +* Fix a bug in `geom_abline()` that resulted in `intercept` not being subjected |
| 48 | + to the transformation of the y scale (@thomasp85, #3741) |
| 49 | + |
| 50 | +* Extent the range of the line created by `geom_abline()` so that line ending |
| 51 | + is not visible for large linewidths (@thomasp85, #4024) |
| 52 | + |
| 53 | +* Fix bug in `geom_dotplot()` where dots would be positioned wrong with |
| 54 | + `stackgroups = TRUE` (@thomasp85, #1745) |
| 55 | + |
| 56 | +* Fix calculation of confidence interval for locfit smoothing in `geom_smooth()` |
| 57 | + (@topepo, #3806) |
26 | 58 |
|
27 | 59 | * Fix bug in `geom_text()` where `"outward"` and `"inward"` justification for
|
28 | 60 | some `angle` values was reversed (@aphalo, #4169, #4447)
|
29 | 61 |
|
30 |
| -* Fix a bug in legend justification where justification was lost of the legend |
31 |
| - dimensions exceeded the available size (@thomasp85, #3635) |
32 |
| - |
33 |
| -* Fix calculation of confidence interval for locfit smoothing (@topepo, #3806) |
| 62 | +* `ggsave()` now sets the default background to match the fill value of the |
| 63 | + `plot.background` theme element (@karawoo, #4057) |
34 | 64 |
|
35 |
| -* Fix bug in `scale_[x|y]_date()` where custom breaks functions that resulted in |
36 |
| - fracional dates would get misaligned (@thomasp85, #3965) |
37 |
| - |
38 |
| -* Fix bug in `scale_[x|y]_datetime()` where a specified timezone would be |
39 |
| - ignored by the scale (@thomasp85, #4007) |
40 |
| - |
41 |
| -* Using `theme(aspect.ratio = ...)` together with free space in `facet_grid()` |
42 |
| - now crrectly throws an error (@thomasp85, #3834) |
43 |
| - |
44 |
| -* Fix a bug in `stat_summary_bin()` where one more than the requested number of |
45 |
| - bins would be created (@thomasp85, #3824) |
46 |
| - |
47 |
| -* Fix issue in `sec_axis()` that would throw warnings in the absence of any |
48 |
| - secondary breaks (@thomasp85, #4368) |
| 65 | +* It is now deprecated to specify `guides(<scale> = FALSE)` or |
| 66 | + `scale_*(guide = FALSE)` to remove a guide. Please use |
| 67 | + `guides(<scale> = "none")` or `scale_*(guide = "none")` instead |
| 68 | + (@yutannihilation, #4094). |
49 | 69 |
|
50 |
| -* Fix a bug in `geom_abline()` that resulted in `intercept` not being subjected |
51 |
| - to the transformation of the y scale (@thomasp85, #3741) |
| 70 | +* Fix a bug in `guide_bins()` where keys would disappear if the guide was |
| 71 | + reversed (@thomasp85, #4210) |
52 | 72 |
|
53 | 73 | * Fix bug in `guide_coloursteps()` that would repeat the terminal bins if the
|
54 | 74 | breaks coincided with the limits of the scale (@thomasp85, #4019)
|
55 |
| - |
56 |
| -* Extent the range of the line created by `geom_abline()` so that line ending |
57 |
| - is not visible for large linewidths (@thomasp85, #4024) |
58 | 75 |
|
59 | 76 | * Make sure that default labels from default mappings doesn't overwrite default
|
60 | 77 | labels from explicit mappings (@thomasp85, #2406)
|
61 |
| - |
62 |
| -* `stat_count()` now computes width based on the full dataset instead of per |
63 |
| - group (@thomasp85, #2047) |
64 | 78 |
|
65 | 79 | * Fix bug in `labeller()` where parsing was turned off if `.multiline = FALSE`
|
66 | 80 | (@thomasp85, #4084)
|
67 | 81 |
|
68 |
| -* Fix a bug in `qplot()` when supplying `c(NA, NA)` as axis limits |
69 |
| - (@thomasp85, #4027) |
| 82 | +* Make sure `label_bquote()` has access to the calling environment when |
| 83 | + evaluating the labels (@thomasp85, #4141) |
70 | 84 |
|
71 |
| -* Fix bug in `geom_dotplot()` where dots would be positioned wrong with |
72 |
| - `stackgroups = TRUE` (@thomasp85, #1745) |
| 85 | +* Fix a bug in the layer implementation that introduced a new state after the |
| 86 | + first render which could lead to a different look when rendered the second |
| 87 | + time (@thomasp85, #4204) |
73 | 88 |
|
74 |
| -* Make sure position_jitter creates the same jittering independent of whether it |
75 |
| - is called by name or with constructor (@thomasp85, #2507) |
| 89 | +* Fix a bug in legend justification where justification was lost of the legend |
| 90 | + dimensions exceeded the available size (@thomasp85, #3635) |
76 | 91 |
|
77 | 92 | * Fix a bug in `position_dodge2()` where `NA` values in thee data would cause an
|
78 | 93 | error (@thomasp85, #2905)
|
79 | 94 |
|
| 95 | +* Make sure `position_jitter()` creates the same jittering independent of |
| 96 | + whether it is called by name or with constructor (@thomasp85, #2507) |
| 97 | + |
80 | 98 | * Fix a bug in `position_jitter()` where different jitters would be applied to
|
81 | 99 | different position aesthetics of the same axis (@thomasp85, #2941)
|
82 |
| - |
83 |
| -* `ggsave()` now uses ragg to render raster output if ragg is available |
84 |
| - (@thomasp85, #4388) |
85 | 100 |
|
86 |
| -* `coord_sf()` now has an argument `default_crs` that specifies the coordinate |
87 |
| - reference system (CRS) for non-sf layers and scale/coord limits. This argument |
88 |
| - defaults to the World Geodetic System 1984 (WGS84), which means x and y positions |
89 |
| - are interpreted as longitude and latitude. This is a potentially breaking change |
90 |
| - for users who use projected coordinates in non-sf layers or in limits. Setting |
91 |
| - `default_crs = NULL` recovers the old behavior. Further, authors of extension |
92 |
| - packages implementing `stat_sf()`-like functionality are encouraged to look at the |
93 |
| - source code of `stat_sf()`'s `compute_group()` function to see how to provide |
94 |
| - scale-limit hints to `coord_sf()` (@clauswilke, #3659). |
95 |
| - |
96 |
| -* `ggsave()` now sets the default background to match the fill value of the |
97 |
| - `plot.background` theme element (@karawoo, #4057) |
98 |
| - |
99 |
| -* Extended `stat_ecdf()` to calculate the cdf from either x or y instead from y only (@jgjl, #4005). |
| 101 | +* Fix a bug in `qplot()` when supplying `c(NA, NA)` as axis limits |
| 102 | + (@thomasp85, #4027) |
| 103 | + |
| 104 | +* Remove cross-inheritance of default discrete colour/fill scales and check the |
| 105 | + type and aesthetic of function output if `type` is a function |
| 106 | + (@thomasp85, #4149) |
100 | 107 |
|
101 |
| -* Fixed a bug in `labeller()` so that `.default` is passed to `as_labeller()` |
102 |
| - when labellers are specified by naming faceting variables. (@waltersom, #4031) |
| 108 | +* Fix bug in `scale_[x|y]_date()` where custom breaks functions that resulted in |
| 109 | + fracional dates would get misaligned (@thomasp85, #3965) |
103 | 110 |
|
104 |
| -* Updated style for example code (@rjake, #4092) |
| 111 | +* Fix bug in `scale_[x|y]_datetime()` where a specified timezone would be |
| 112 | + ignored by the scale (@thomasp85, #4007) |
| 113 | + |
| 114 | +* Fix issue in `sec_axis()` that would throw warnings in the absence of any |
| 115 | + secondary breaks (@thomasp85, #4368) |
105 | 116 |
|
106 |
| -* Only drop groups in `stat_ydensity()` when there are fewer than two data points and throw a warning (@andrewwbutler, #4111). |
| 117 | +* `stat_bin()`'s computed variable `width` is now documented (#3522). |
| 118 | + |
| 119 | +* `stat_count()` now computes width based on the full dataset instead of per |
| 120 | + group (@thomasp85, #2047) |
107 | 121 |
|
108 |
| -* It is now deprecated to specify `guides(<scale> = FALSE)` or |
109 |
| - `scale_*(guide = FALSE)` to remove a guide. Please use |
110 |
| - `guides(<scale> = "none")` or `scale_*(guide = "none")` instead |
111 |
| - (@yutannihilation, #4094). |
| 122 | +* Extended `stat_ecdf()` to calculate the cdf from either x or y instead from y |
| 123 | + only (@jgjl, #4005) |
112 | 124 |
|
113 |
| -* Date and datetime position scales support out-of-bounds (oob) arguments to |
114 |
| - control how limits affect data outside those limits (@teunbrand, #4199). |
| 125 | +* Fix a bug in `stat_summary_bin()` where one more than the requested number of |
| 126 | + bins would be created (@thomasp85, #3824) |
115 | 127 |
|
116 |
| -* `stat_bin()`'s computed variable `width` is now documented (#3522). |
| 128 | +* Only drop groups in `stat_ydensity()` when there are fewer than two data |
| 129 | + points and throw a warning (@andrewwbutler, #4111). |
117 | 130 |
|
118 | 131 | * Fixed a bug in strip assembly when theme has `strip.text = element_blank()`
|
119 | 132 | and plots are faceted with multi-layered strips (@teunbrand, #4384).
|
| 133 | + |
| 134 | +* Using `theme(aspect.ratio = ...)` together with free space in `facet_grid()` |
| 135 | + now crrectly throws an error (@thomasp85, #3834) |
| 136 | + |
| 137 | +* Fixed a bug in `labeller()` so that `.default` is passed to `as_labeller()` |
| 138 | + when labellers are specified by naming faceting variables. (@waltersom, #4031) |
| 139 | + |
| 140 | +* Updated style for example code (@rjake, #4092) |
120 | 141 |
|
121 | 142 | * ggplot2 now requires R >= 3.3 (#4247).
|
122 | 143 |
|
|
127 | 148 | * Improved error with hint when piping a `ggplot` object into a facet function
|
128 | 149 | (#4379, @mitchelloharawild).
|
129 | 150 |
|
130 |
| -* Fix a bug that `after_stat()` and `after_scale()` cannot refer to aesthetics |
131 |
| - if it's specified in the plot-global mapping (@yutannihilation, #4260). |
132 |
| - |
133 |
| -* `ggsave()` now returns the saved file location invisibly (#3379, @eliocamp). |
134 |
| - |
135 |
| -* The scale arguments `limits`, `breaks`, `minor_breaks`, `labels`, `rescaler` |
136 |
| - and `oob` now accept purrr style lambda notation (@teunbrand, #4427). |
137 |
| - |
138 |
| -* `as_labeller()` (and therefore also `labeller()`) now handles functions in |
139 |
| - purrr-style lambda notation (@netique, #4188). |
140 |
| - |
141 | 151 | # ggplot2 3.3.3
|
142 | 152 | This is a small patch release mainly intended to address changes in R and CRAN.
|
143 | 153 | It further changes the licensing model of ggplot2 to an MIT license.
|
|
0 commit comments