ggplot分面图:在绘图内修改Y轴刻度文本(截断下划线后内容)
解决方法:在ggplot内修改Y轴刻度文本(无需修改原始数据框)
你完全不用改动原始的df数据框,只需要在ggplot的刻度设置里添加一个自定义的标签处理函数就行。因为你用了coord_flip(),原来的X轴(name列)变成了Y轴,所以我们要针对scale_y_discrete来调整标签:
修改后的完整代码如下:
ggplot() + geom_bar( data=df, color = "white", stat = "identity", position='dodge', aes(x=name, y=value) ) + coord_flip() + geom_text(data = df, angle = 0, hjust = 1, aes(x=name, y=value, label=value) ) + facet_wrap(~ var, scales = "free", ncol = 2) + # 关键:在这里添加scale_y_discrete来处理标签 scale_y_discrete(labels = function(x) gsub("[_].*$", "", x)) + theme( axis.text.x=element_blank(), axis.title.y=element_blank() )
关键部分解释:
scale_y_discrete(labels = function(x) gsub("[_].*$", "", x)):这个匿名函数会接收Y轴的每个原始标签(也就是name列的每个值),用gsub把下划线_及其后面的所有内容替换为空,只保留下划线前面的部分。- 这种方式是在刻度标签层面做处理,完全不会修改原始数据框
df里的内容,完美匹配你的需求。
内容的提问来源于stack exchange,提问作者user3206440
相关产品推荐
相关产品推荐

