如何在ggplot中调整geom_text_npc文本及下划线位置(不修改Y轴)
调整ggplot中geom_text_npc文本及下划线至绘图底部的方法
你遇到的问题核心是geom_text_npc使用的是npc(归一化父坐标),而nudge_y是针对数据坐标系的偏移参数,所以对它完全无效。要把文本和下划线下移到靠近底部边缘,需要直接修改两者的npc坐标值,保持相对位置同步调整即可。
修改后的代码如下:
library(ggplot2) library(ggalt) library(ggpp) library(grid) df <- data.frame(trt=LETTERS[1:5], l=c(20, 40, 10, 30, 50), r=c(70, 50, 30, 60, 80)) ggplot(df, aes(y = trt, x = l, xend = r)) + geom_dumbbell(size = 3, color = "#e3e2e1", colour_x = "#5b8124", colour_xend = "#bad744") + # 调整npcy值,越小越靠近底部 geom_text_npc(aes(npcx = 'center', npcy = 0.03), label = expression('No. of'~italic('AA')~'isolates with corresponding types'), parse = TRUE) + annotation_custom( grob = rectGrob( # 同步调整矩形的y坐标,保持在文本下方 x = unit(0.5, "npc"), y = unit(0.015, "npc"), width = unit(0.4, "npc"), height = unit(0.011, "npc"), gp = gpar(fill = "gray60", col = NA) ) )
关键说明:
- npc坐标的范围是0(绘图区域最底部)到1(最顶部),所以减小
npcy的数值就能让文本下移 - 要保持下划线在文本下方,需要同步减小
annotation_custom中rectGrob的y参数值,确保两者相对位置不变 - 如果需要更靠近底部,可以继续降低这两个数值(比如
npcy = 0.02,y = unit(0.01, "npc")),直到达到你想要的位置
内容的提问来源于stack exchange,提问作者Brian Smith
相关产品推荐
相关产品推荐

