通过填写 R 重新排序条形图
reorder bar plot by fill in R
如何设置这个图升序排列?非常感谢。
library(ggplot2)
library(reshape2)
iris2 <- melt(iris, id.vars="Species"); iris2
ggplot(data=iris2, aes(x=Species, y=value, fill=variable))+
geom_bar(stat="identity", position="dodge")
您可以使用 reorder
以 总体 升序设置条形图:
iris2$variable <- reorder(iris2$variable, iris2$value)
ggplot(data=iris2, aes(x=Species, y=value, fill=variable))+
geom_bar(stat="identity", position="dodge")
请注意,所有 3 个组的顺序相同,这意味着 setosa 有一个小节“不合适”。
有可能,但更棘手的是,让每个物种的条形图按升序排列。
library(tidyverse)
iris2 %>%
group_by(variable, Species) %>%
summarise(value = max(value)) %>%
mutate(xval = as.numeric(as.factor(Species))) %>%
group_by(Species) %>%
mutate(xval = 0.2 * order(value) - 0.5 + xval) %>%
ggplot(aes(x=xval, y=value, fill=variable))+
geom_col(position="dodge", width = 0.2) +
scale_x_continuous(breaks = 1:3, labels = unique(iris2$Species),
name = "Species")
如何设置这个图升序排列?非常感谢。
library(ggplot2)
library(reshape2)
iris2 <- melt(iris, id.vars="Species"); iris2
ggplot(data=iris2, aes(x=Species, y=value, fill=variable))+
geom_bar(stat="identity", position="dodge")
您可以使用 reorder
以 总体 升序设置条形图:
iris2$variable <- reorder(iris2$variable, iris2$value)
ggplot(data=iris2, aes(x=Species, y=value, fill=variable))+
geom_bar(stat="identity", position="dodge")
请注意,所有 3 个组的顺序相同,这意味着 setosa 有一个小节“不合适”。
有可能,但更棘手的是,让每个物种的条形图按升序排列。
library(tidyverse)
iris2 %>%
group_by(variable, Species) %>%
summarise(value = max(value)) %>%
mutate(xval = as.numeric(as.factor(Species))) %>%
group_by(Species) %>%
mutate(xval = 0.2 * order(value) - 0.5 + xval) %>%
ggplot(aes(x=xval, y=value, fill=variable))+
geom_col(position="dodge", width = 0.2) +
scale_x_continuous(breaks = 1:3, labels = unique(iris2$Species),
name = "Species")