1 2ggrepel 0.9.1 2021-01-09 3======================== 4 5## Bug fixes 6 7* Fix label positions (only for `geom_label_repel()`). The same plot would look 8 OK with ggrepel 0.8.2, but incorrect with ggrepel 0.9.0. Thanks to 9 Ben Baumer (@beanumber) for reporting this in [issue 182]. 10 11[issue 182]: https://github.com/slowkow/ggrepel/issues/182 12 13* Fix a bug that caused R to crash (only on Windows, not on Linux or macOS) for 14 some specific code examples. Thanks to Pedro Aphalo (@aphalo) for reporting 15 this in [issue 179] and for testing the patched code. 16 17[issue 179]: https://github.com/slowkow/ggrepel/issues/179 18 19 20ggrepel 0.9.0 2020-12-14 21======================== 22 23## Changes 24 25* Points can be different sizes. Repel text labels from large points and small 26 points. New examples in the vignette show how to do this. See discussion about 27 this feature in [issue 83]. 28 29[issue 83]: https://github.com/slowkow/ggrepel/issues/83 30 31* New parameter `max.overlaps` stops ggrepel from trying to label overcrowded 32 data points. The default setting is `max.overlaps = 10`, so text labels that 33 overlap more than 10 things (points or labels) will be excluded from further 34 calculations and rendering. Of course, we can set `max.overlaps = Inf` to 35 restore the behavior in ggrepel 0.8.1. See [issue 48] for more discussion. 36 We can also use `option(ggrepel.max.overlaps = Inf)` to disable this new 37 functionality and display all labels, regardless of too many overlaps. 38 39[pull request 48]: https://github.com/slowkow/ggrepel/pull/48 40 41* Add examples to the [vignette] for `ggplot2::position_jitter()` and 42 `ggbeeswarm::position_quasirandom()` 43 44* Line segments can now be curved (#131, @malcolmbarrett). Add examples 45 to the [vignette] showing different options. 46 47* Add support for new aesthetics: 48 - segment.size 49 - segment.colour 50 - segment.alpha 51 - segment.curvature 52 - segment.angle 53 - segment.ncp 54 55* Add `max.time` option to limit the number of seconds spent trying to position 56 the text labels. 57 58* Add `verbose` option to show timing information: seconds elapse, iteration count, 59 number of remaining overlaps (thanks to @MichaelChirico #159). 60 61* Add `bg.color` and `bg.r` aesthetics for `geom_text()` to display shadows 62 behind text labels. Thanks to @rcannood for adding this feature with 63 [pull request 142]. 64 65[pull request 142]: https://github.com/slowkow/ggrepel/pull/142 66 67## Bug fixes and improvements 68 69* Line segments are the same color as the text by default (#164, @lishinkou). 70 71* Text justification for multi-line text labels should be working as expected. 72 Thanks to @johnhenrypezzuto and @phalteman for comments in [issue 137]. 73 74[issue 137]: https://github.com/slowkow/ggrepel/issues/137 75 76* Put text labels on top of all line segments (@kiendang). This fixes 77 [issue 35], where line segments sometimes appear on top of text. 78 79[issue 35]: https://github.com/slowkow/ggrepel/issues/35 80 81* Thanks to Paul Murrell (@pmur002) for notifying us to use `is.unit(x)` 82 instead of `class(x) == "unit"` in [issue 141]. This should future-proof 83 ggrepel for new versions of the grid package. 84 85[issue 141]: https://github.com/slowkow/ggrepel/issues/141 86 87* Fix the way `xlim = c(-Inf, Inf)` is treated. Thanks to @thomasp85 for 88 pointing out the bug in [issue 136]. 89 90[issue 136]: https://github.com/slowkow/ggrepel/issues/136 91 92* Add new segment options. Thanks to @krassowski for adding this feature with 93 [pull request 151]. 94 - segment.shape 95 - segment.square 96 - segment.squareShape 97 - segment.inflect 98 99[pull request 151]: https://github.com/slowkow/ggrepel/pull/151 100 101ggrepel 0.8.1 2019-05-07 102======================== 103 104## Bug fixes and improvements 105 106* Fix heap buffer overflow that causes R to crash. See [issue 115]. Thanks to 107 Brodie Gaslam (@brodieG) for helping me to setup an environment to reproduce 108 the bug on my own system. 109 110[issue 115]: https://github.com/slowkow/ggrepel/issues/115 111 112ggrepel 0.8.0 2018-05-09 113======================== 114 115## Bug fixes and improvements 116 117* Fix `geom_label_repel(..., point.padding=NA)`. Reported by @mlell in 118 [issue 104]. 119 120[issue 104]: https://github.com/slowkow/ggrepel/issues/104 121 122ggrepel 0.7.3 2018-02-09 123======================== 124 125## Changes 126 127* Add support for `position` parameter. See [issue 69]. This allows us to 128 add text labels to points positioned with `position_jitter()`, 129 `position_dodge()`, `position_jitterdodge()`, etc. 130 131 Please note that this feature will not work with ggplot2 2.2.1 or older. 132 133[issue 69]: https://github.com/slowkow/ggrepel/issues/69 134 135ggrepel 0.7.2 2018-01-14 136======================== 137 138## Bug fixes and improvements 139 140Thanks to @AliciaSchep and @aphalo 141 142* Fix warning about `hjust`. See [issue 93]. 143 144* Fix bug when subset of points is labeled in `geom_label_repel`. 145 See [issue 92]. 146 147[issue 92]: https://github.com/slowkow/ggrepel/issues/92 148[issue 93]: https://github.com/slowkow/ggrepel/issues/93 149 150ggrepel 0.7.1 2017-11-18 151======================== 152 153## Changes 154 155Thanks to @AliciaSchep 156 157* Add support for `hjust` and `vjust` parameters. See [issue 69]. 158 Also see new examples in the [vignette]. 159 160* Add code to avoid intersecting line segments. See [issue 34]. 161 162[issue 69]: https://github.com/slowkow/ggrepel/issues/69 163[issue 34]: https://github.com/slowkow/ggrepel/issues/34 164 165ggrepel 0.7.0 2017-09-28 166======================== 167 168## Bug fixes 169 170* Fix intersection between lines and rectangles, to reproduce the same 171 aesthetically pleasant behavior as in version 0.6.5. 172 173 This is an improvement on the sloppy implementation introduced in 0.6.8. See 174 [commit 28633d] for more information. 175 176[commit 28633d]: https://github.com/slowkow/ggrepel/commit/28633db5eb3d3cc2bd935bd438a8bb36b5673951 177 178ggrepel 0.6.12 2017-07-16 179======================== 180 181## Changes 182 183* Reproduce identical plots by using `seed = 1` to set the seed in 184 `geom_text_repel()` or `geom_label_repel()`. By default, no seed will be set. 185 186 This is an improvement on the sloppy implementation introduced in 0.6.2. See 187 [issue 33] and [issue 73] for more discussion of this feature. Thanks to 188 Pierre Gramme for reminding me about this via email. 189 190[issue 33]: https://github.com/slowkow/ggrepel/issues/33 191[issue 73]: https://github.com/slowkow/ggrepel/issues/73 192 193ggrepel 0.6.11 2017-07-08 194======================== 195 196## Changes 197 198Thanks to @seaaan 199 200* Allow certain parameters to be passed as numbers or `unit()` 201 instead of only units. See [issue 79]. 202 203[issue 79]: https://github.com/slowkow/ggrepel/issues/79 204 205ggrepel 0.6.10 2017-03-07 206======================== 207 208## Bug fixes 209 210Thanks to @zkamvar 211 212* Fix the crash for plots that do not specify `xlim` or `ylim`. 213 See [pull 74]. 214 215[pull 74]: https://github.com/slowkow/ggrepel/pull/74 216 217ggrepel 0.6.9 2017-03-07 218======================== 219 220## Bug fixes 221 222* Fix the crash for plots with `facet_wrap` or `facet_grid` that have no 223 labeled points. Thanks to @pcroteau for [pull 70]. 224 225[pull 70]: https://github.com/slowkow/ggrepel/pull/70 226 227ggrepel 0.6.8 2017-02-12 228======================== 229 230## Changes 231 232* Constrain repulsion force to x-axis "x" or y-axis "y" with `direction` in 233 `geom_text_repel()` and `geom_label_repel()`. Thanks to @AliciaSchep for [pull 68]. 234 235[pull 68]: https://github.com/slowkow/ggrepel/pull/68 236 237ggrepel 0.6.7 2017-01-09 238======================== 239 240## Changes 241 242* Constrain text labels to specific areas of the plot with `xlim` and `ylim` in 243 `geom_text_repel()` and `geom_label_repel()`. Thanks to @lukauskas for [pull 67]. 244 245[pull 67]: https://github.com/slowkow/ggrepel/pull/67 246 247ggrepel 0.6.6 2016-11-28 248======================== 249 250## Bug fixes 251 252* Mathematical expressions as labels with `parse = TRUE` in 253 `geom_text_repel()` and `geom_label_repel()`. 254 Thanks to @fawda123 for [issue 60]. 255 256[issue 60]: https://github.com/slowkow/ggrepel/issues/60 257 258ggrepel 0.6.5 2016-11-22 259======================== 260 261## Changes 262 263Thanks to @jiho for these: 264 265* changed `alpha` in `geom_label_repel()` to control text, label 266 background, label border, and segment. 267 268* Allow `segment.colour` as well as `segment.color`. 269 270* By default, map text color and text alpha to the segment color unless they 271 are overridden. 272 273* Call `scales::alpha()` instead of `alpha()`. 274 275ggrepel 0.6.4 2016-11-08 276======================== 277 278## Bug fixes 279 280* Fix a bug that caused ggrepel to fail on polar coordinates `coord_polar()`. 281 See [issue 56]. 282 283[issue 56]: https://github.com/slowkow/ggrepel/issues/56 284 285ggrepel 0.6.3 2016-10-14 286======================== 287 288## Changes 289 290* Use `point.padding=NA` to ignore data points in repulsion calculations. 291 292ggrepel 0.6.2 2016-10-06 293======================== 294 295## Bug fixes 296 297* Stop the labels from escaping the plot boundaries instead of applying 298 a force at the boundary. 299 300* Call `set.seed` within `geom_text_repel()` and `geom_label_repel()` to 301 allow recreating identical plots. Thanks to @erikor for [issue 33]. 302 303[issue 33]: https://github.com/slowkow/ggrepel/issues/33 304 305## Changes 306 307* Add `min.segment.length` to `geom_text_repel()` and `geom_label_repel()`. 308 309ggrepel 0.6.1 2016-10-04 310======================== 311 312## Changes 313 314* Tweak `repel_boxes.cpp`. Dampen forces to tune how the labels move. The 315 result looks better, at least for the examples in the [vignette]. 316 317ggrepel 0.6.0 2016-10-03 318======================== 319 320## Changes 321 322* Do not draw labels with empty strings. When a label is an empty string, 323 the text will not be shown, the segment will not be drawn, but the 324 corresponding data point will repel other labels. See [issue 51]. 325 326[issue 51]: https://github.com/slowkow/ggrepel/issues/51 327 328* Add `segment.alpha` as an option for `geom_text_repel()` and 329 `geom_label_repel()`. 330 331* Implement `angle` aesthetic for `geom_text_repel()`, the same way as done in 332 ggplot2 `geom_text()`. 333 334* Move `nudge_x` and `nudge_y` out of the aesthetics function `aes()`. This 335 makes ggrepel consistent with ggplot2 functions `geom_text()` and 336 `geom_label()`. Backwards incompatible with 0.5.1. 337 338* Restore `segment.color` as an option for `geom_text_repel()` and 339 `geom_label_repel()`. 340 341* Tweak `repel_boxes.cpp`. Do not weight repulsion force by ratios of bounding 342 box heights and widths. This seems to perform better, especially after 343 rotating text labels. 344 345ggrepel 0.5.1 2016-02-22 346======================== 347 348* Optimize C++ code further by reducing number of calls to `rnorm()`. 349 350ggrepel 0.5 2016-02-08 351======================== 352 353* First push to CRAN. 354 355ggrepel 0.4.6 2016-02-07 356======================== 357 358## Changes 359 360* Tweak `point.padding` so that users can configure how far labels are pushed 361 away from data points. 362 363ggrepel 0.4.5 2016-02-06 364======================== 365 366## Changes 367 368* Optimize C++ code for a 2.5X speed improvment. 369 370* Delete unnecessary .Rd files. 371 372ggrepel 0.4.4 2016-02-05 373======================== 374 375FIXES 376 377* Fix the bug when the line segment from the data point points to the origin 378 at (0,0) instead of the text label. 379 380## Changes 381 382* Automatically recompute repulsion between labels after resizing the plot. 383 384ggrepel 0.4.3 2016-01-18 385======================== 386 387## Changes 388 389* Change distance between segment and label in `geom_label_repel()`. Now there 390 is no gap between the end of the segment and the label border. 391 392ggrepel 0.4.2 2016-01-15 393======================== 394 395FIXES 396 397* Fix `spring_force()` so that it never returns NaN. 398 399## Changes 400 401* Add `nudge_x` and `nudge_y` to better control positioning of labels. 402 403ggrepel 0.4.1 2016-01-13 404======================== 405 406## Changes 407 408* Add `arrow` parameter to allow plotting arrows that point to the labeled data 409 points rather than plain line segments. 410 411* Always draw segments, even if the labeled point is very close to the label. 412 413FIXES 414 415* Fix `point.padding` so that horizontal and vertical padding is calculated 416 correctly. 417 418* Tweak forces to improve layout near borders and in crowded areas. 419 420ggrepel 0.4 2016-01-12 421======================== 422 423## Bug fixes 424 425* Fix [issue 7]. Labels can now be placed anywhere in the plotting area 426 instead of being limited to the x and y ranges of their corresponding data 427 points. 428 429[issue 7]: https://github.com/slowkow/ggrepel/issues/7 430 431* Fix DESCRIPTION to require ggplot2 >= 2.0.0 432 433## Changes 434 435* Add new parameter `point.padding` to add padding around the labeled points. 436 The line segment will stop before reaching the coordinates of the point. The 437 text labels are also now padded from the line segment to improve legibility. 438 439* Add volcano plot to the [vignette] usage examples. 440 441* Add Travis continuous integration to test against R-devel, R-release, and 442 R-oldrel. 443 444* Dampen repulsion force to slightly improve algorithm efficiency. 445 446* Move `intersect_line_rectangle()` to `src/repel_boxes.cpp`. 447 448ggrepel 0.3 2016-01-08 449======================== 450 451## Changes 452 453* Remove unused imports: `colorspace`. 454 455* Update NAMESPACE with new version of roxygen. 456 457* Use spring force to attract each label to its own point. 458 459* Change default maximum iterations from 10,000 to 2000. 460 461* Update man pages. 462 463* Remove unused code. 464 465ggrepel 0.2.0 2016-01-07 466======================== 467 468## Changes 469 470* Update `geom_text_repel()` and `geom_label_repel()`. 471 472 * Change `label.padding` to `box.padding`. 473 474 * Remove unsupported parameters: 475 * position 476 * nudge_x 477 * nudge_y 478 * hjust 479 * vjust 480 481* Remove unused imports. 482 483## Documentation 484 485* Add roxygen docs to all functions. 486 487ggrepel 0.1.0 2016-01-05 488======================== 489 490## Changes 491 492* Add `geom_label_repel()`. 493 494* Add fudge width to help with legends. 495 496* Add `expand=TRUE` to allow text to be placed in the expanded plot area. 497 498* Add man/ folder. 499 500* Add links to ggplot2 docs in [vignette]. 501 502* Add unused R implementation of `repel_boxes()`, just for your reference. 503 504ggrepel 0.0.1 2016-01-04 505======================== 506 507* Initial release to github. 508 509[vignette]: https://github.com/slowkow/ggrepel/blob/master/vignettes/ggrepel.Rmd 510