ggplot中axis.text.x设置X轴标签旋转无效问题求助
问题:ggplot中X轴标签旋转设置不生效
我尝试对包含10个处理组的treatment变量对应的X轴标签进行旋转,已将标签重命名为自定义名称以避免重叠。执行标准axis.text配置代码后无报错,但图表中X轴标签并未旋转。其他图表使用相同代码可正常生效,无法定位问题。相关代码如下:
ggplot(summary_stats, aes(x = as.factor(treatment_num), y = mean, ymin = lower_ci, ymax = upper_ci, color = ifelse(treatment_num %% 2 == 0, "Low", "High"))) + geom_point() + geom_errorbar(width = 0.2) + labs(x = "Regions", y = "DV: Policy Support", title = "Difference in Means Between Treatments on Policy Support (Among All)") + scale_x_discrete(breaks = 1:10, labels = c( "1" = "E High 1", "2" = "E Low", "3" = "A High", "4" = "A Low", "5" = "ME High", "6" = "ME Low", "7" = "LA High", "8" = "LA Low", "9" = "AA High", "10" = "AA Low")) + scale_color_manual(values = c('High' = '#67a9cf', 'Low' = '#DF536B'), labels = c('High', 'Low'), guide = guide_legend(title = '')) + theme(axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1), axis.ticks.x = element_line(color = "transparent")) + theme_bw()
我也尝试调整axis.ticks、axis.ticks.x等参数,但问题依旧。
解决方案
问题根源是主题加载顺序错误:theme_bw()会重置所有主题参数为其默认配置,你把自定义的theme()放在theme_bw()之前,导致旋转标签的设置被默认主题覆盖了。
只需调整代码顺序,将自定义theme()放在theme_bw()之后,让自定义设置覆盖默认主题即可:
ggplot(summary_stats, aes(x = as.factor(treatment_num), y = mean, ymin = lower_ci, ymax = upper_ci, color = ifelse(treatment_num %% 2 == 0, "Low", "High"))) + geom_point() + geom_errorbar(width = 0.2) + labs(x = "Regions", y = "DV: Policy Support", title = "Difference in Means Between Treatments on Policy Support (Among All)") + scale_x_discrete(breaks = 1:10, labels = c( "1" = "E High 1", "2" = "E Low", "3" = "A High", "4" = "A Low", "5" = "ME High", "6" = "ME Low", "7" = "LA High", "8" = "LA Low", "9" = "AA High", "10" = "AA Low")) + scale_color_manual(values = c('High' = '#67a9cf', 'Low' = '#DF536B'), labels = c('High', 'Low'), guide = guide_legend(title = '')) + theme_bw() + # 先加载默认主题 theme(axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1), axis.ticks.x = element_line(color = "transparent")) # 再覆盖自定义设置
这样axis.text.x的旋转设置就会生效,因为它在theme_bw()之后加载,优先级更高。
内容的提问来源于stack exchange,提问作者Kelsey Osborne
相关产品推荐
相关产品推荐

