首页 > 解决方案 > 为几何条形图中的标签选择排序

问题描述

我正在尝试可视化基于定性等级的数据,并且我想将等级从最差到最好排序。当前的排序似乎是按字典顺序排列的。我怎样才能改变这个?不幸的是,我不知道如何分享一个工作示例:该列G3.x充满了基于字母的定性等级。当我使用示例尝试代码时,test_data <- c("Excellent", "Very Good", "Good", "Sufficient", "Weak", "Poor")出现错误:错误:数据必须是数据帧,或其他可通过 fortify() 强制执行的对象,而不是字符向量

library(ggplot2)
library(scales)

ggplot(data = math_and_portuguese, aes(x = G3.x)) +
    geom_bar(aes(y = (..count..)/sum(..count..)), position = "dodge", fill = "cornflowerblue", color="black") +
    geom_text(aes(y = round((..count..)/sum(..count..),2),
                  label=paste0(round(prop.table(..count..) * 100, 2), '%'),
                  size = 3, hjust = 0.5, vjust = -1, position = "stack"),
              stat = 'count',
              position = position_dodge(.9),
              size = 3)+
    labs(x = 'G3 Mathematics grade', y = 'Percent')
p1

在此处输入图像描述

标签: rggplot2

解决方案


任何离散项目的排序通过以下方式完成:

  • 如果您的列是一个因子,则按因子ggplot2的水平排序
  • 如果您的列不是一个因素,请ggplot2按字母数字顺序

在这种情况下,解决方案是math_and_portuguese$G3.x通过转换为因子并指定所需的水平来离散设置水平:

math_and_portuguese$G3.x <- factor(math_and_portuguese$G3.x,
  levels=c("Excellent", "Very Good", "Good", "Sufficient", "Weak", "Poor"))

首先运行它,然后轴的顺序应该反映因子的水平。


推荐阅读