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