使用geom_label_repel如何移除ggplot图表左侧标签
问题解决方法
你当前的绘图代码中调用了两次geom_text_repel():
- 第一次调用没有指定独立的x/y映射,默认使用全局美学配置中的
x1、y1,也就是左侧端点的坐标来绘制标签 - 第二次调用单独指定了
aes(x2, y2),对应右侧端点的标签绘制
要移除左侧所有标签,直接删除第一次geom_text_repel()的调用代码即可,调整后的完整代码如下:
set.seed(42) # 需提前加载依赖包 library(ggplot2) library(ggrepel) d <- data.frame( x1 = 1, y1 = rnorm(10), x2 = 2, y2 = rnorm(10), lab = state.name[1:10] ) p <- ggplot(d, aes(x1, y1, xend = x2, yend = y2, label = lab, col = lab)) + geom_segment(size = 1) + guides(color = "none") + theme(axis.title.x = element_blank()) + # 仅保留对应右侧标签的geom_text_repel调用即可 geom_text_repel( aes(x2, y2), nudge_x = 0.1, direction = "y", hjust = "left" ) p
如果你使用的是带边框的geom_label_repel(),调整逻辑完全一致,仅保留对应右侧坐标的调用即可。
内容的提问来源于stack exchange,提问作者JaFranke
相关产品推荐
相关产品推荐

