繁体   English   中英

在 ggplot2 geom_bar 中重新排序因子计数数据

[英]Reorder factored count data in ggplot2 geom_bar

如果使用stat="identity"读取ggplot2 (geom_bar)的数据帧,我会发现无数的示例将 X 重新排序为 Y 的相应大小。

我还没有找到stat="count"的例子。 重新排序功能失败,因为我没有相应的y

我有一个列的因子 DF, "count" (参见下面的一个糟糕的例子),其中有您期望的多个数据实例。 但是,我希望显示因子数据:

ggplot(df, aes(x=df$count)) + geom_bar() 

按每个因子的数量定义的顺序,因为它对于未分解( character )数据是不同的,即,将按字母顺序显示。

知道如何重新排序吗?

这是我目前可怕的努力,遗憾的是我昨晚弄明白了,然后丢失了我的 R 命令历史: 在此处输入图片说明

将计数转换为一个因子,然后修改该因子可能有助于实现您的需求。 在下面,我倒车使用计数的顺序fct_revforcats包(部分tidyverse

library(tidyverse)
iris %>%
  count(Sepal.Length) %>% 
  mutate(n=n %>% as.factor %>% fct_rev) %>% 
  ggplot(aes(n)) +  geom_bar()

或者,如果您希望条形从大到小排列,您可以使用fct_infreq

iris %>%
  count(Sepal.Length) %>% 
  mutate(n=n %>% as.factor %>% fct_infreq) %>% 
  ggplot(aes(n)) +  geom_bar()

如果您从加载 tidyverse 开始您的项目,我建议您使用内置的 tidyverse 函数: fct_infreq()

ggplot(df, aes(x=fct_infreq(df$count))) + geom_bar()

由于您的类别是单词,请考虑添加 coord_flip() 以便您的条形水平运行。

ggplot(df, aes(x=fct_infreq(df$count))) + geom_bar() + coord_flip()

这就是一些鱼类物种计数的样子一个水平条形图,y 轴(但实际上是翻转的 x 轴)和水平轴(但实际上是翻转的 y 轴)上的物种。 计数从最小到最大排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM