Changelog
Source:NEWS.md
ggrepel 0.9.6
Changes
- Remove
exclude_outside()
fromgeom_text_repel()
andgeom_label_repel()
because this change introduced too many breaking changes for other users. See issues:
ggrepel 0.9.5
CRAN release: 2024-01-10
Changes
Introduce a new function
exclude_outside()
intogeom_text_repel()
andgeom_label_repel()
to discard labels outside the panel range, in order to support the ggbreak package. See issue 244 for details.Change
expect_equal()
to include a tolerance, to satisfy CRAN testing.Delete note about old (before 2.2.1) versions of ggplot2, thanks to @olivroy for pull request 246.
Add website link to
DESCRIPTION
, thanks to @olivroy for pull request 241.
ggrepel 0.9.4
CRAN release: 2023-10-12
Changes
Add
min.segment.length
to the options table in the examples page, thanks to @jwhendy for mentioning this.Add example for how to use ggrepel with sf objects, i.e.
geom_text_repel(..., stat = "sf_coordinates")
, thanks to @francisbarton for pull request 236.Use
expect_equal(x, y)
instead ofexpect_true(identical(x, y))
, see issue 242 for details.
ggrepel 0.9.3
CRAN release: 2023-02-03
Bug fixes
- When we set the seed in
ggrepel::geom_text_repel(seed = 1)
, this will no longer override the seed for other unrelated code. Thanks to @kassambara for reporting this in issue 228.
ggrepel 0.9.2
CRAN release: 2022-11-06
Bug fixes
- Fix compiler errors for C++ expressions like
v[i] = {0,0}
that arise for some versions of the clang compiler. Thanks to @Krascal and @vrognas for reporting this in issue 184.
- Fix warning from CRAN
warning: use of bitwise '&' with boolean operands
Changes
Change internal column names, so that
ggrepel::position_nudge_repel()
can now be used withggplot2::geom_text()
. This should also allow us to use new nudge functions from the ggpp package by @aphalo. Thanks to @aphalo for pull request 193.Improve handling of justification for
angle
different from zero inggrepel::geom_text_repel()
pull request 196.
ggrepel 0.9.1 2021-01-09
CRAN release: 2021-01-15
Bug fixes
- Fix label positions (only for
geom_label_repel()
). The same plot would look OK with ggrepel 0.8.2, but incorrect with ggrepel 0.9.0. Thanks to Ben Baumer (@beanumber) for reporting this in issue 182.
ggrepel 0.9.0 2020-12-14
CRAN release: 2020-12-16
Changes
- Points can be different sizes. Repel text labels from large points and small points. New examples in the vignette show how to do this. See discussion about this feature in issue 83.
- New parameter
max.overlaps
stops ggrepel from trying to label overcrowded data points. The default setting ismax.overlaps = 10
, so text labels that overlap more than 10 things (points or labels) will be excluded from further calculations and rendering. Of course, we can setmax.overlaps = Inf
to restore the behavior in ggrepel 0.8.1. See [issue 48] for more discussion. We can also useoption(ggrepel.max.overlaps = Inf)
to disable this new functionality and display all labels, regardless of too many overlaps.
Add examples to the vignette for
ggplot2::position_jitter()
andggbeeswarm::position_quasirandom()
Line segments can now be curved (#131, @malcolmbarrett). Add examples to the vignette showing different options.
-
Add support for new aesthetics:
- segment.size
- segment.colour
- segment.alpha
- segment.curvature
- segment.angle
- segment.ncp
Add
max.time
option to limit the number of seconds spent trying to position the text labels.Add
verbose
option to show timing information: seconds elapse, iteration count, number of remaining overlaps (thanks to @MichaelChirico #159).Add
bg.color
andbg.r
aesthetics forgeom_text()
to display shadows behind text labels. Thanks to @rcannood for adding this feature with pull request 142.
Bug fixes and improvements
Line segments are the same color as the text by default (#164, @lishinkou).
Text justification for multi-line text labels should be working as expected. Thanks to @johnhenrypezzuto and @phalteman for comments in issue 137.
- Put text labels on top of all line segments (@kiendang). This fixes issue 35, where line segments sometimes appear on top of text.
- Thanks to Paul Murrell (@pmur002) for notifying us to use
is.unit(x)
instead ofclass(x) == "unit"
in issue 141. This should future-proof ggrepel for new versions of the grid package.
- Fix the way
xlim = c(-Inf, Inf)
is treated. Thanks to @thomasp85 for pointing out the bug in issue 136.
- Add new segment options. Thanks to @krassowski for adding this feature with pull request 151.
- segment.shape
- segment.square
- segment.squareShape
- segment.inflect
ggrepel 0.7.3 2018-02-09
Changes
-
Add support for
position
parameter. See issue 69. This allows us to add text labels to points positioned withposition_jitter()
,position_dodge()
,position_jitterdodge()
, etc.Please note that this feature will not work with ggplot2 2.2.1 or older.
ggrepel 0.7.2 2018-01-14
Bug fixes and improvements
Thanks to @AliciaSchep and @aphalo
ggrepel 0.7.1 2017-11-18
Changes
Thanks to @AliciaSchep
ggrepel 0.7.0 2017-09-28
CRAN release: 2017-09-29
Bug fixes
-
Fix intersection between lines and rectangles, to reproduce the same aesthetically pleasant behavior as in version 0.6.5.
This is an improvement on the sloppy implementation introduced in 0.6.8. See commit 28633d for more information.
ggrepel 0.6.12 2017-07-16
Changes
-
Reproduce identical plots by using
seed = 1
to set the seed ingeom_text_repel()
orgeom_label_repel()
. By default, no seed will be set.This is an improvement on the sloppy implementation introduced in 0.6.2. See issue 33 and issue 73 for more discussion of this feature. Thanks to Pierre Gramme for reminding me about this via email.
ggrepel 0.6.8 2017-02-12
Changes
- Constrain repulsion force to x-axis “x” or y-axis “y” with
direction
ingeom_text_repel()
andgeom_label_repel()
. Thanks to @AliciaSchep for pull 68.
ggrepel 0.6.7 2017-01-09
Changes
- Constrain text labels to specific areas of the plot with
xlim
andylim
ingeom_text_repel()
andgeom_label_repel()
. Thanks to @lukauskas for pull 67.
ggrepel 0.6.6 2016-11-28
Bug fixes
- Mathematical expressions as labels with
parse = TRUE
ingeom_text_repel()
andgeom_label_repel()
. Thanks to @fawda123 for issue 60.
ggrepel 0.6.5 2016-11-22
CRAN release: 2016-11-24
Changes
Thanks to @jiho for these:
changed
alpha
ingeom_label_repel()
to control text, label background, label border, and segment.Allow
segment.colour
as well assegment.color
.By default, map text color and text alpha to the segment color unless they are overridden.
Call
scales::alpha()
instead ofalpha()
.
ggrepel 0.6.4 2016-11-08
Bug fixes
- Fix a bug that caused ggrepel to fail on polar coordinates
coord_polar()
. See issue 56.
ggrepel 0.6.2 2016-10-06
Bug fixes
Stop the labels from escaping the plot boundaries instead of applying a force at the boundary.
Call
set.seed
withingeom_text_repel()
andgeom_label_repel()
to allow recreating identical plots. Thanks to @erikor for issue 33.
Changes
- Add
min.segment.length
togeom_text_repel()
andgeom_label_repel()
.
ggrepel 0.6.1 2016-10-04
Changes
- Tweak
repel_boxes.cpp
. Dampen forces to tune how the labels move. The result looks better, at least for the examples in the vignette.
ggrepel 0.6.0 2016-10-03
Changes
- Do not draw labels with empty strings. When a label is an empty string, the text will not be shown, the segment will not be drawn, but the corresponding data point will repel other labels. See issue 51.
Add
segment.alpha
as an option forgeom_text_repel()
andgeom_label_repel()
.Implement
angle
aesthetic forgeom_text_repel()
, the same way as done in ggplot2geom_text()
.Move
nudge_x
andnudge_y
out of the aesthetics functionaes()
. This makes ggrepel consistent with ggplot2 functionsgeom_text()
andgeom_label()
. Backwards incompatible with 0.5.1.Restore
segment.color
as an option forgeom_text_repel()
andgeom_label_repel()
.Tweak
repel_boxes.cpp
. Do not weight repulsion force by ratios of bounding box heights and widths. This seems to perform better, especially after rotating text labels.
ggrepel 0.5.1 2016-02-22
- Optimize C++ code further by reducing number of calls to
rnorm()
.
ggrepel 0.4.4 2016-02-05
FIXES
- Fix the bug when the line segment from the data point points to the origin at (0,0) instead of the text label.
ggrepel 0.4.3 2016-01-18
Changes
- Change distance between segment and label in
geom_label_repel()
. Now there is no gap between the end of the segment and the label border.
ggrepel 0.4.1 2016-01-13
Changes
Add
arrow
parameter to allow plotting arrows that point to the labeled data points rather than plain line segments.Always draw segments, even if the labeled point is very close to the label.
FIXES
Fix
point.padding
so that horizontal and vertical padding is calculated correctly.Tweak forces to improve layout near borders and in crowded areas.
ggrepel 0.4 2016-01-12
CRAN release: 2016-01-12
Bug fixes
- Fix issue 7. Labels can now be placed anywhere in the plotting area instead of being limited to the x and y ranges of their corresponding data points.
- Fix DESCRIPTION to require ggplot2 >= 2.0.0
Changes
Add new parameter
point.padding
to add padding around the labeled points. The line segment will stop before reaching the coordinates of the point. The text labels are also now padded from the line segment to improve legibility.Add volcano plot to the vignette usage examples.
Add Travis continuous integration to test against R-devel, R-release, and R-oldrel.
Dampen repulsion force to slightly improve algorithm efficiency.
Move
intersect_line_rectangle()
tosrc/repel_boxes.cpp
.
ggrepel 0.2.0 2016-01-07
Changes
-
Update
geom_text_repel()
andgeom_label_repel()
.Change
label.padding
tobox.padding
.-
Remove unsupported parameters:
- position
- nudge_x
- nudge_y
- hjust
- vjust
Remove unused imports.
ggrepel 0.1.0 2016-01-05
Changes
Add
geom_label_repel()
.Add fudge width to help with legends.
Add
expand=TRUE
to allow text to be placed in the expanded plot area.Add man/ folder.
Add links to ggplot2 docs in vignette.
Add unused R implementation of
repel_boxes()
, just for your reference.