Provides text and label geoms for 'ggplot2' that help to avoid overlapping text labels. Labels repel away from each other and away from the data points.
ggrepel provides geoms for ggplot2 to repel overlapping text labels.
library(ggplot2)library(ggrepel)ggplot(mtcars, aes(wt, mpg)) +geom_point(color = 'red') +geom_text_repel(aes(label = rownames(mtcars))) +theme_classic(base_size = 16)
See the vignette for more usage examples.
Also, look at the help pages:
Install the latest stable release from CRAN:
Alternatively, install the latest development version from github:
Or install a tagged version:
Please submit an issue to report bugs or ask questions.
Please contribute bug fixes or new features with a pull request to this repository.
statistical practice by making available a body of useful functions that make direct labeling of common plots easy to do with high-level plotting systems such as lattice and ggplot2. The main function that the package provides is direct.label(p), which takes a lattice or ggplot2 plot p and adds direct labels.
Pretty word clouds.
wordcloud package implements a spiraling algorithm to prevent text
labels from overlapping each other.
Force field simulation of interaction of set of points. Very useful for placing text labels on graphs, such as scatterplots.
I found that functions in the
FField package were not ideal for repelling
overlapping rectangles, so I wrote my own.
See this gist for examples of how to use the
CHANGES (thanks to @jiho)
geom_label_repel() to control text, label
background, label border, and segment.
segment.colour as well as
By default, map text color and text alpha to the segment color unless they are overridden.
FIXES (thanks to @jiho)
coord_polar(). See issue 56.
point.padding=NAto ignore data points in repulsion calculations.
Stop the labels from escaping the plot boundaries instead of applying a force at the boundary.
allow recreating identical plots. Fixes issue 33.
repel_boxes.cpp. Dampen forces to tune how the labels move. The result looks better, at least for the examples in the vignette.
segment.alpha as an option for
angle aesthetic for
geom_text_repel(), the same way as done in
nudge_y out of the aesthetics function
makes ggrepel consistent with ggplot2 functions
geom_label(). Backwards incompatible with 0.5.1.
segment.color as an option for
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.
point.paddingso 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.
geom_label_repel(). Now there is no gap between the end of the segment and the label border.
spring_force()so that it never returns NaN.
nudge_yto better control positioning of labels.
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.
point.padding so that horizontal and vertical padding is calculated
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.
Remove unused imports:
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.
Remove unsupported parameters:
Remove unused imports.
Add fudge width to help with legends.
expand=TRUE to allow text to be placed in the expanded plot area.
Add man/ folder.
Add links to ggplot2 docs in vignette.
repel_boxes(), just for your reference.