r - 为几何条形图中的标签选择排序
问题描述
我正在尝试可视化基于定性等级的数据,并且我想将等级从最差到最好排序。当前的排序似乎是按字典顺序排列的。我怎样才能改变这个?不幸的是,我不知道如何分享一个工作示例:该列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
解决方案
任何离散项目的排序通过以下方式完成:
- 如果您的列是一个因子,则按因子
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"))
首先运行它,然后轴的顺序应该反映因子的水平。
推荐阅读
- django - Django REST Framework 基于类的视图继承
- reactjs - 在 JSX 中嵌套 If 语句
- reactjs - 使用 cypress 测试 Echarts 反应组件
- javascript - 如何对表格的行进行分组(按“数量”单元格)?
- html - 如何将导航与标题对齐
- asp.net-core - 重新设计 Abp.IdentityServer 的 UI(身份服务器 4)
- javascript - 在错误 500 上处理 puppeteer click 和 waitForNavigation 承诺
- sed - 删除方括号之间包含特定文本的所有行
- javascript - 如果在 2 个浏览器选项卡上,Angularjs 通知显示两次
- c++ - 模板类中的未知标识符