如何在R中使用get_labels为柱状图设置正确顺序的x轴标签
问题原因
你的标签错位来自两个错误用法:
- x轴错误映射为
as.factor(n),你本质要展示的是Q3的分类选项而非计数值本身 get_labels(DMQ3$DM3)返回的是Stata导入时自带的原始顺序标签,和你排序后的DMQ3行顺序不匹配,直接赋值给scale_x_discrete的labels参数自然会出现错位。
你之前已经通过reorder生成了按计数排序的因子列name,只要基于这个列调整即可,也可以用更简便的因子顺序设定方法实现需求。
解决代码
方案1:直接使用已有排序完成的name列,匹配对应标签
ggplot(DMQ3, aes(x = name, y = n)) + geom_col() + scale_x_discrete(labels = as.character(as_factor(DMQ3$DM3))) + labs(x = "单项目平均产生数据量", y = "响应计数")
方案2:先将分类列按当前排序重设因子水平,绘图时直接映射该列(更易维护)
library(forcats) # 按当前DMQ3的行顺序设定因子水平,标签自动对应Stata导入的选项文本 DMQ3 <- DMQ3 %>% mutate(DM3_factor = as_factor(DM3) %>% fct_inorder()) # 绘图时无需再手动指定标签 ggplot(DMQ3, aes(x = DM3_factor, y = n)) + geom_col() + labs(x = "单项目平均产生数据量", y = "响应计数")
内容的提问来源于stack exchange,提问作者user1587602
相关产品推荐
相关产品推荐

