如果使用ggplot2 (geom_bar)
读取stat="identity"
的数据帧,我发现无数示例将X按相应的Y大小重新排序。
我还没有找到stat="count"
的例子。重新排序功能失败,因为我没有相应的y
。
我有一个因子分解因数(DF)为一列"count"
(有关不良示例,请参见下文),其中有您期望的多个数据实例。但是,我希望能够显示分解数据:
ggplot(df, aes(x=df$count)) + geom_bar()
由每个因子的数量定义的顺序,因为它与未分解的(character
)数据不同,即将按字母顺序显示。
任何想法如何重新排序?
答案 0 :(得分:0)
将计数转换为一个因子,然后修改该因子可能有助于完成所需的工作。在下面的内容中,我将使用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()
答案 1 :(得分:0)
如果你从加载 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()