gpt4 book ai didi

r - 强制 geom_bar 在任何情况下都不干扰 x 排序?

转载 作者:行者123 更新时间:2023-12-02 06:46:19 26 4
gpt4 key购买 nike

我正在尝试禁用 geom_bar 中 x 变量的字母顺序重新排序。我看到很多关于如何重新排序简单条形图中的 x 变量的问题和答案(例如 hereherehere),但每个答案都引入了复杂性如果订单可以完好无损

则不需要

是否有任何方法将预先安排的 data.frame 通过管道传输到 geom_bar() 并停用字母顺序重新排序,以便生成的条形图只是按照 x 在 data.frame 中出现的顺序显示 x

例子

假设我们有一些数据已经按照绘制的方式排序


df <- structure(list(software = c("Python", "R", "SQL", "Hadoop", "Tableau",
"Scala", "SAS", "Java", "C", "Spark"), users = c(6440, 5750, 4725,1755, 1660, 1560, 1490, 965, 875, 830)), row.names = c(NA, -10L), class = "data.frame")


# software users
# 1 Python 6440
# 2 R 5750
# 3 SQL 4725
# 4 Hadoop 1755
# 5 Tableau 1660
# 6 Scala 1560
# 7 SAS 1490
# 8 Java 965
# 9 C 875
# 10 Spark 830



df %>% ggplot(aes(software, users)) + geom_bar(stat = "identity") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))

这对 x 重新排序 - 我们如何强制 geom_bar 按字母顺序重新排序列,以便生成的条形图按照它在 data.frame 中出现的顺序显示 x,这样我们就不必再进行任何重新排序了吗?

最佳答案

将其更改为 factor 并根据出现次数排列它们。

library(dplyr)
library(ggplot2)

df %>%
mutate(software = factor(software, levels = unique(software))) %>%
ggplot() + aes(software, users) + geom_bar(stat = "identity") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))

enter image description here

要在不将列更改为因子的情况下重新排列,我们可以使用reorder

ggplot(df) + aes(reorder(software, match(software,unique(software))), users) + 
geom_bar(stat = "identity") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))

关于r - 强制 geom_bar 在任何情况下都不干扰 x 排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60680005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com