[英]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
)数据是不同的,即,将按字母顺序显示。
知道如何重新排序吗?
将计数转换为一个因子,然后修改该因子可能有助于实现您的需求。 在下面,我倒车使用计数的顺序fct_rev
从forcats
包(部分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.