如何在ggplot条形图右侧坐标轴添加自定义文本标签
实现方法
你可以通过添加geom_text()图层完成标签添加需求,由于同一carb分组下的carb_labelright取值完全一致,需要先对标签去重避免重复渲染,修改后的完整代码如下:
library(ggplot2) library(dplyr) # 用于distinct函数实现标签去重 mtcars$carb<-as.character(mtcars$carb) mtcars$gear<-as.character(mtcars$gear) mtcars$carb_labelright<-paste0("label_right",mtcars$carb) ggplot(mtcars, aes(fill=gear, y=wt, x=carb)) + geom_bar(position="fill", stat="identity",width=.8)+ # 新增文本标签图层 geom_text(data = distinct(mtcars, carb, carb_labelright), aes(x = carb, y = 1.02, label = carb_labelright), hjust = 0, inherit.aes = FALSE)+ coord_flip()+ theme(axis.text.x = element_text(angle=90), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_blank(), panel.background = element_blank())
参数说明
data = distinct(mtcars, carb, carb_labelright):提取carb和对应标签的唯一值组合,避免同一分组重复打印多次标签y = 1.02:由于position="fill"参数会将y轴范围归一化到0~1,设置y为略大于1的数值即可让标签显示在条形右侧,数值越大标签离条形越远hjust = 0:设置文本左对齐,让标签左侧贴近条形边缘inherit.aes = FALSE:避免继承全局ggplot的fill等映射参数,防止报错
如果你不想额外加载dplyr包,可以将
geom_text的data参数替换为data = unique(mtcars[,c("carb","carb_labelright")]),效果完全一致。
内容的提问来源于stack exchange,提问作者Olympia
相关产品推荐
相关产品推荐

