Build Status CRAN_Status_Badge CRAN_Downloads_Badge

ggrepel provides geoms for ggplot2 to repel overlapping text labels.

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:

devtools::install_github("slowkow/[email protected]")


Please submit an issue to report bugs or ask questions.

Please contribute bug fixes or new features with a pull request to this repository.

Related work


This package is an attempt to make direct labeling a reality in everyday 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.

The 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 wordcloud and FField packages with ggplot2.

Try the ggrepel package in your browser

Any scripts or data that you put into this service are public.

ggrepel documentation built on Sept. 30, 2017, 1:04 a.m.