gpt4 book ai didi

R 中 coord_flip 之后的相反顺序

转载 作者:行者123 更新时间:2023-12-03 04:59:44 27 4
gpt4 key购买 nike

来自 dbv 的数据示例:

  gender Sektion
1 m 5
2 m 5
3 w 3B
4 w 3B
5 w 3B
6 m 4

我有以下情节:

Sekplot <- ggplot(dbv,aes(x=Sektion,
fill=factor(gender),
stat="bin",
label = paste(round((..count..)/sum(..count..)*100), "%")))
Sekplot <- Sekplot + geom_bar(position="fill")
Sekplot <- Sekplot + scale_y_continuous(labels = percent)
Sekplot <- Sekplot + labs(title = "test")
Sekplot <- Sekplot + scale_fill_discrete(name="test", breaks=c("m", "w", "k.A."), labels=c("m", "w", "k.A."))
Sekplot <- Sekplot + geom_hline(aes(yintercept = ges, linetype = "test"), colour = "black", size = 0.75, show_guide = T)
Sekplot <- last_plot() + coord_flip()
Sekplot <- Sekplot + guides(colour = guide_legend(override.aes = list(linetype = 0 )),
fill = guide_legend(override.aes = list(linetype = 0 )),
shape = guide_legend(override.aes = list(linetype = 0 )),
linetype = guide_legend()) + theme(legend.title=element_blank())

Sekplot

输出:以错误顺序绘制 y 轴

Plot with y-axis in wrong order

如何反转“Sektion”轴的顺序?我想在上面放 1 个,在下面放 8 个。

我试过了,根据groupA$Date <- factor(groupA$Date, levels=rev(unique(groupA$Date))) :

Sekplot <- last_plot() + coord_flip() + scale_x_reverse()

有多种口味,但找不到正确的方法。

最佳答案

您可以添加带有 limits 参数的 scale_x_discrete 来执行此操作。您可以简单地按照您想要的顺序写出限制,但当您有许多因子级别时,情况会变得复杂。

相反,您可以从数据集中提取因子水平,并利用 rev 将它们按相反的顺序排列。

它看起来像:

scale_x_discrete(limits = rev(levels(dbv$Sektion)))

2022 年由 @slhck 编辑

在示例中添加使用 forcats::fct_rev() 函数以相反的顺序设置因子的级别。您可以在数据集中进行此更改,也可以在映射 x 变量时直接使用,如下所示。

ggplot(dbv, aes(x = forcats::fct_rev(Sektion),
fill = factor(gender),
stat = "bin",
label = paste(round((..count..)/sum(..count..)*100), "%")
)
)
...

关于R 中 coord_flip 之后的相反顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34227967/

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