gpt4 book ai didi

r - 更改 ggplot 堆积面积图中的堆积顺序

转载 作者:行者123 更新时间:2023-12-01 10:39:27 25 4
gpt4 key购买 nike

我有以下数据:

df <- as.data.frame(c(rep(1,3),rep(2,3),rep(3,3)))
names(df) <- "cont_var"
df$factor_var <- as.factor(rep(c("fac1","fac2","fac3"),3))
df$prop <- c(10,20,70,20,30,50,25,40,35)

“factor_var”的级别是:
> levels(df$factor_var)
[1] "fac1" "fac2" "fac3"

我使用以下方法制作了一个堆积面积图:
library(ggplot)
ggplot(df, aes(x=cont_var, y=prop, fill=factor_var)) +
geom_area(colour="black",size=.2, alpha=.8) +
scale_fill_manual(values=c("blue", "grey", "red"))

返回以下结果:
enter image description here

图例显示“factor_var”按照之前看到的级别排序,但区域不是以相同的顺序堆叠。如何生成底部为红色、灰色、蓝色堆叠在顶部的输出,就像图例中的情况一样?

(注意。这是我需要的顺序(factor_var 是一个有序变量),这不仅仅是出于美学原因将堆叠与图例顺序匹配的情况。)

编辑:所需的结果如下所示

enter image description here

解决方案 !!

重新排序数据帧对于创建所需的结果是必要的:
newdata <- df[order(df$cont_var, df$factor_var),]

非常感谢您的帮助。

最佳答案

您可以通过添加 guides(fill = guide_legend(reverse=TRUE)) 来更改图例的顺序到您的代码:

ggplot(dat, aes(x=cont_var, y=prop, fill=factor_var)) +
geom_area(colour="black",size=.2, alpha=.8) +
scale_fill_manual(values=c("blue", "grey", "red")) +
guides(fill = guide_legend(reverse=TRUE))

这给出:

enter image description here

或者,您可以在绘图之前设置因子水平:
# manually ordering the factor levels
dat$factor_var2 <- factor(dat$factor_var, levels=c("fac3","fac2","fac1"))
# automatcally ordering the factor levels (copied from Jakub P's answer)
dat$factor_var2 <- factor(dat$factor_var, sort(unique(dat$factor_var), decreasing = TRUE))

ggplot(dat, aes(x=cont_var, y=prop, fill=factor_var2)) +
geom_area(colour="black",size=.2, alpha=.8) +
scale_fill_manual(values=c("blue", "grey", "red"))

这给出:

enter image description here

关于r - 更改 ggplot 堆积面积图中的堆积顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31432311/

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