Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Avoid overlapping geom_point and geom_text in ggplot2

How can I avoid that these 2 layers in ggplot2 overlap? I try to display the text so that they are not laying above the points.

check_overlap does a great job with avoiding that the text overlaps itself, but not with other layers.

I also tried the library geom_text_repel, but this library does not support check_overlap and shows the text for every data point.

But I need to not have the text for every point, like check_overlap does.

ggplot(dat, aes(x = CPI, y = HDI)) +
  geom_point(aes(color = Region), shape=21, size=4, position = "identity") +
  geom_text(data = dat, aes(label = Country), size=4, check_overlap = TRUE)
like image 890
Max Avatar asked Nov 08 '22 16:11

Max


1 Answers

geom_text_repel will not create text labels for the empty string "". However, the text labels will repel away from the unlabeled data points.

Try this:

# Hide text labels for the first 3 data points
idx <- c(1,2,3)

dat$CountryLabel      <- dat$Country
dat$CountryLabel[idx] <- ""

library(ggrepel)
ggplot(...) + geom_text_repel(data = dat, aes(label = CountryLabel))
like image 62
Kamil Slowikowski Avatar answered Nov 15 '22 06:11

Kamil Slowikowski