If you've ever created a scatterplot with text labels using the text function in R, or the geom_text function in the ggplot2 package, you've probably found that the text labels can easily overlap, rendering some of them unreadable. Now, thanks to the new extensibility capabilities of the ggplot2 package, R user Kamil Slowikowski has created an R package ggrepel that adds alternative text labeling functions to ggplot2 that "repels" labels from data points and other labels to avoid overlapping. The new geom_text_repel replaces the standard geom_text for plain text lablels, and you can also use geom_label_repel instead of geom_label for these rounded and color-coded labels:
The resulting plot is definitely more attractive, and with more readable lables, than the standard version using geom_text:
You can see more examples of ggrepel in action here. A word of caution, though: if you're relying on the text labels as the fundamental element of your visualization, this does have the effect of moving your data around, and that could change your interpretation of theplot. (Case in point: the spread of data appears greater in the first plot than the "messy" one just above, even though it's the exact same data being presented both times.) But if your main goal is not interpretation, or if you just want to label a few points in particular (and ensure the labels are readable), this new ggrepel package is well worth a look. The ggrepel package is available on CRAN now, and you can follow its development on Github at the link below.
github (slowkow): ggrepel
Thanks, so far this looks much more convenient than the directlabels package for simple repelling! Looking forward to more geom extensions with ggplot2 version 2.
Posted by: Suyog Chandramouli | January 11, 2016 at 16:13
This looks impressive.
Posted by: Narenndra Choudhary | January 12, 2016 at 07:37
Very nice indeed. I particularly like the horizontal shift and pointer lines.
Posted by: Jim Lemon | February 10, 2016 at 02:12