r - ggplot中的排序列
问题描述
我已经尝试过其他人的建议(ggplot中的 Order bar和ggplot2 bar graph 中的 Order Bars)来排序列,但我仍然无法得到它。
我有一个数据集,其中有一个名为“Zap”的列,其中包含我想要从最高出现计数到最少排序的值。这是我的 R 代码:
mydata %>%
group_by(Zap) %>%
summarize(count = n()) %>%
mutate(percent = count/sum(count)) %>%
ggplot(aes(x=Zap, y=count, fct_infreq(Zap))) +
xlab("EA5 Zigbee Enabled")+
geom_col() +
geom_text(aes(label = paste0(round(100 * percent, 1), "%")), vjust = -0.25)
该代码实际上并没有重新排序任何东西。这就是我得到的(未排序)
我也试过这个:
mydata %>%
group_by(Zap) %>%
summarize(count = n()) %>%
mutate(percent = count/sum(count)) %>%
ggplot(aes(x=Zap, y=count)) +
x=reorder(Zap,Zap, function(x)-count(x)) +
xlab("EA5 Zigbee Enabled")+
geom_col() +
geom_text(aes(label = paste0(round(100 * percent, 1), "%")), vjust = -0.25)
但是这段代码给了我一个错误:
重新排序错误(Zap,Zap,函数(x)-count(x)):找不到对象“Zap”
任何想法我做错了什么?
解决方案
您可以使用reorder(Zap, -count)
x 变量的定义按其计数对 x 变量进行排序aes
:
mydata %>%
group_by(Zap) %>%
summarize(count = n()) %>%
mutate(percent = count/sum(count)) %>%
ggplot(aes(x=reorder(Zap, -count), y=count, fct_infreq(Zap))) +
xlab("EA5 Zigbee Enabled")+
geom_col() +
geom_text(aes(label = paste0(round(100 * percent, 1), "%")), vjust = -0.25)
数据示例
mydata <- data.frame(Zap = c(rep("enabled",85*5),rep("enabled22",1*5),rep("disabled",14*5)))
推荐阅读
- c# - JObject JSON解析嵌套对象
- android - 在构建之前从 build.gradle 中的工件中检索 android colors.xml
- azure-devops - Azure 开发运营 | Git 回购 | 不允许删除分支
- python - 模拟 twisted.web.http_headers.Headers responseHeaders 不起作用
- python - 使用 QGraphicsView 场景放大鼠标位置
- android-studio - 禁用/隐藏内部类的 IDE 折叠按钮
- c# - Visual Studio C#:无法使用 IntelliTest 对类中的方法生成单元测试?
- php - Require_once php 在托管程序中不起作用
- php - preg_match_all 使用 php preg_match_all 从 httpd-vhosts.conf 文件 xampp 获取虚拟主机列表
- json - 在 aws 中拆分和合并批处理作业中的 json 文件