R:如何避免重叠标签

时间:2017-11-23 22:15:13

标签: r ggplot2

我用ggplot2创建了一个图形,有些标签重叠。我想显示所有标签而不重叠。那可能吗?怎么样?我知道有一个选项" check_overlap"如果没有重叠,则显示或不显示标签的geom_text。但是,这不是我想要的。我想要并且需要显示所有标签。

我的代码:

ggplot(data, aes(x=DRTG, y=ORTG)) +
  geom_point(colour = "#000000") + 
  ggtitle("Gráfico Liga DIA: Ratio Ofensivo / Ratio Defensivo (hasta jornada 8)") +
  geom_text(label=rownames(data), colour = "#000000", nudge_x = 0, nudge_y = 1, size = 4, fontface = "bold", check_overlap = F) +
  geom_point(data=pointMedia, aes(x=mediaDRTG, y=mediaORTG, colour="red", size = 1)) + 
  geom_vline(xintercept = pointMedia[, "mediaDRTG"], colour = "green") + 
  geom_hline(yintercept = pointMedia[, "mediaORTG"], colour = "blue") +
  geom_text(data=pointMedia, aes(x=mediaDRTG, y=mediaORTG, label="Liga DIA"), nudge_x = 0, nudge_y = 1, colour = "red", fontface = "bold") +
  theme(legend.position = "none") +
  geom_abline(intercept =0 , slope = 1, colour = "orange")+ xlim(70,115) + ylim(70,115)

图片上的部分标签重叠:

enter image description here

1 个答案:

答案 0 :(得分:0)

发布以前评论的答案。

而不是仅为nudge_y传递geom_text的一个常量值:

ggplot(data, aes(x=DRTG, y=ORTG)) +
  geom_text(label=rownames(data), colour = "#000000", 
            nudge_x = 0, nudge_y = 1, size = 4, fontface = "bold", check_overlap = F)

...您可以传递完整的向量,例如my_nudge_y

my_nudge_y=c(1,1,...,0.6,1.2,...)
ggplot(data, aes(x=DRTG, y=ORTG)) +
  geom_text(label=rownames(data), colour = "#000000", 
  nudge_x = 0, nudge_y = my_nudge_y, size = 4, fontface = "bold", check_overlap = F)

用于单独调整字符串位置。

一般来说,解决重叠并不是一件容易的问题,因为已经有相对较少的文本,绘图区域开始填充文本。

相关问题