gpt4 book ai didi

r - 如何在 ggplot2 条形图中明确且一致地排序分组条形

转载 作者:行者123 更新时间:2023-12-03 08:49:31 26 4
gpt4 key购买 nike

我从同一个数据帧创建了两个分组条形图,并且两者都遇到了相同的问题。在第一个图中,我在 x 轴上按类别(本例中为字段)对数据进行分组,并按年份填充每个条形,我还用 fill=as.factor(Year) 进行了分类。 。在第二张图中,我切换了 x 轴上可视化的变量和条形(填充)的颜色。换句话说,数据在 x 轴上按年份分组,并根据字段 ( fill=as.factor(fnum) ) 填充。看来 ggplot 正在根据 y 值对条形进行排序,但我试图以分类、逻辑的方式(按年份或字段)对数据进行一致的排序。有什么方法可以指定顺序,无论是在绘图代码中还是在我构建数据框的方式中?谢谢。

代码1:

ggplot(data=OM, aes(factor(fnum), y=Value, fill=as.factor(Year))) + 
geom_bar(stat="identity", position = "dodge")+
labs(x='Field', y='Soil Organic Matter %', fill='Year',
title = 'Organic Matter Plotted by Field and Year')+
theme(axis.text.x = element_text(angle=65, vjust=0.6))

First plot

代码2:

ggplot(data=OM, aes(factor(Year), y=Value, fill=as.factor(fnum))) + 
geom_bar(stat="identity", position = "dodge",color='black')+
labs(x='Year', y='Soil Organic Matter %', fill='Field',
title = 'Organic Matter Plotted by Field and Year')+
theme(axis.text.x = element_text(angle=65, vjust=0.6))

Second plot

最佳答案

您的数据不是按 y 值组织的,如果您查看 Field 的顺序,在两个绘图上,它们都遵循相同的顺序。 r 会自动以升序方式对因子向量进行排序(1 -> 9、A -> Z),因此这就是您的 PRF 值似乎排序错误的原因。

如果你想有一个自定义的顺序,你可以在使用ggplot之前设置它,如下所示:

OM$fnum <- factor(OM$fnum, levels = c("PRF1","PRF1-2","PRF2","PRF3","PRF4","PRF5-1","PRF5-3","PRF6","PRF7","PRF8","PRF9","PRF10","PRF12"

然后,它应该按照您指定的顺序一致地绘制所有内容。

您的列已经按升序排列,因为2015年在2017年之前,在2019年之前。所以不需要更改它。

它能回答你的问题吗?如果没有,您应该考虑提供数据集的可重现示例(请参阅此处:How to make a great R reproducible example)


PS:顺便说一句,您的图中用作 y 的列 Value 似乎采用因子格式。是故意的吗?

关于r - 如何在 ggplot2 条形图中明确且一致地排序分组条形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59869757/

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