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.max.overlaps
stops ggrepel from trying to label overcrowded
data points. The default setting is max.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 set max.overlaps = Inf
to
restore the behavior in ggrepel 0.8.1. See [issue 48] for more discussion.
We can also use option(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()
and
ggbeeswarm::position_quasirandom()
Line segments can now be curved (#131, @malcolmbarrett). Add examples to the [vignette] showing different options.
Add support for new aesthetics:
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
and bg.r
aesthetics for geom_text()
to display shadows
behind text labels. Thanks to @rcannood for adding this feature with
[pull request 142].
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.
is.unit(x)
instead of class(x) == "unit"
in issue 141. This should future-proof
ggrepel for new versions of the grid package.xlim = c(-Inf, Inf)
is treated. Thanks to @thomasp85 for
pointing out the bug in issue 136.geom_label_repel(..., point.padding=NA)
. Reported by @mlell in
[issue 104].Add support for position
parameter. See [issue 69]. This allows us to
add text labels to points positioned with position_jitter()
,
position_dodge()
, position_jitterdodge()
, etc.
Please note that this feature will not work with ggplot2 2.2.1 or older.
Thanks to @AliciaSchep and @aphalo
Fix warning about hjust
. See [issue 93].
Fix bug when subset of points is labeled in geom_label_repel
.
See [issue 92].
Thanks to @AliciaSchep
Add support for hjust
and vjust
parameters. See [issue 69].
Also see new examples in the [vignette].
Add code to avoid intersecting line segments. See [issue 34].
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.
Reproduce identical plots by using seed = 1
to set the seed in
geom_text_repel()
or geom_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.
Thanks to @seaaan
unit()
instead of only units. See [issue 79].Thanks to @zkamvar
xlim
or ylim
.
See [pull 74].facet_wrap
or facet_grid
that have no
labeled points. Thanks to @pcroteau for [pull 70].direction
in
geom_text_repel()
and geom_label_repel()
. Thanks to @AliciaSchep for [pull 68].xlim
and ylim
in
geom_text_repel()
and geom_label_repel()
. Thanks to @lukauskas for [pull 67].parse = TRUE
in
geom_text_repel()
and geom_label_repel()
.
Thanks to @fawda123 for [issue 60].Thanks to @jiho for these:
changed alpha
in geom_label_repel()
to control text, label
background, label border, and segment.
Allow segment.colour
as well as segment.color
.
By default, map text color and text alpha to the segment color unless they are overridden.
Call scales::alpha()
instead of alpha()
.
coord_polar()
.
See [issue 56].point.padding=NA
to ignore data points in repulsion calculations.Stop the labels from escaping the plot boundaries instead of applying a force at the boundary.
Call set.seed
within geom_text_repel()
and geom_label_repel()
to
allow recreating identical plots. Thanks to @erikor for [issue 33].
min.segment.length
to geom_text_repel()
and geom_label_repel()
.repel_boxes.cpp
. Dampen forces to tune how the labels move. The
result looks better, at least for the examples in the [vignette].Add segment.alpha
as an option for geom_text_repel()
and
geom_label_repel()
.
Implement angle
aesthetic for geom_text_repel()
, the same way as done in
ggplot2 geom_text()
.
Move nudge_x
and nudge_y
out of the aesthetics function aes()
. This
makes ggrepel consistent with ggplot2 functions geom_text()
and
geom_label()
. Backwards incompatible with 0.5.1.
Restore segment.color
as an option for geom_text_repel()
and
geom_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.
rnorm()
.point.padding
so that users can configure how far labels are pushed
away from data points.Optimize C++ code for a 2.5X speed improvment.
Delete unnecessary .Rd files.
FIXES
geom_label_repel()
. Now there
is no gap between the end of the segment and the label border.FIXES
spring_force()
so that it never returns NaN.nudge_x
and nudge_y
to better control positioning of labels.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.
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()
to src/repel_boxes.cpp
.
Remove unused imports: colorspace
.
Update NAMESPACE with new version of roxygen.
Use spring force to attract each label to its own point.
Change default maximum iterations from 10,000 to 2000.
Update man pages.
Remove unused code.
Update geom_text_repel()
and geom_label_repel()
.
Change label.padding
to box.padding
.
Remove unsupported parameters:
Remove unused imports.
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.
verbose = getOption("verbose", default = FALSE)
by default, and use messages instead of warnings. Thanks to @jpquast for suggesting this change in [pull request 263]. This should prevent unexpected warning messages in packages that depend on ggrepel.exclude_outside()
from geom_text_repel()
and geom_label_repel()
because this change introduced too many breaking changes for other users. See issues:
Introduce a new function exclude_outside()
into geom_text_repel()
and geom_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].
Add min.segment.length
to the options table in the examples page, thanks to
@jwhendy for [mentioning this][issue 213].
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 of expect_true(identical(x, y))
, see [issue 242] for details.
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].v[i] = {0,0}
that arise
for some versions of the clang compiler. Thanks to @Krascal and @vrognas
for reporting this in issue 184.warning: use of bitwise '&' with boolean operands
Change internal column names, so that ggrepel::position_nudge_repel()
can now be used
with ggplot2::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 in
ggrepel::geom_text_repel()
[pull request 196].