ggplot2长标签换行求助:已试scales和string库无效
解决ggplot2长标签换行的问题
给你两个实用的方法解决长标签换行的问题,直接修改现有代码即可:
方法1:手动插入换行符
直接在长标签字符串里加\n,精准指定换行位置:
# 数据处理部分保持不变,修改ggplot的scale_x_discrete部分 ggplot(data = subset(likert_howlikely, !is.na(Answer)), aes(x=Question_num)) + geom_bar(aes(fill=Answer), position="fill") + scale_fill_brewer(palette='PRGn', direction=-1) + scale_y_continuous(expand=expansion(0), labels=scales::percent_format()) + labs(title='How likely likert scale', x='Questions', y='Percent Answered') + theme_minimal() + coord_flip() + # 删掉语法错误的labs('lkredcc' = ...),这行对标签设置无效 scale_x_discrete(labels=c( 'How likely, governments in enough countries\n take action to reduce climate change', 'How likely, large numbers of people\n limit energy use', 'Imagine large numbers of people limit energy use,\n how likely reduce climate change', 'How likely, limiting own energy use\n reduce climate change' ))
方法2:用stringr自动换行
如果不想手动拆分,用stringr::str_wrap()按指定宽度自动换行,需要先加载stringr包:
library(stringr) # 数据处理部分不变,修改scale_x_discrete ggplot(data = subset(likert_howlikely, !is.na(Answer)), aes(x=Question_num)) + geom_bar(aes(fill=Answer), position="fill") + scale_fill_brewer(palette='PRGn', direction=-1) + scale_y_continuous(expand=expansion(0), labels=scales::percent_format()) + labs(title='How likely likert scale', x='Questions', y='Percent Answered') + theme_minimal() + coord_flip() + scale_x_discrete(labels = str_wrap( c('How likely, governments in enough countries take action to reduce climate change ', 'How likely, large numbers of people limit energy use', 'Imagine large numbers of people limit energy use, how likely reduce climate change', 'How likely, limiting own energy use reduce climate change'), width = 30 # 每行最多30个字符,可根据需求调整 ))
如果觉得标签显示拥挤,还可以在theme里调整文本大小和边距:
+ theme(axis.text.y = element_text(size = 10, margin = margin(r = 10)))
(因为coord_flip()后,原x轴变为y轴,所以要调整axis.text.y)
内容的提问来源于stack exchange,提问作者Natalie
相关产品推荐
相关产品推荐

