gpt4 book ai didi

r - ggplot2 条形图中条形的顺序和颜色

转载 作者:行者123 更新时间:2023-12-03 20:39:20 24 4
gpt4 key购买 nike

使用 ggplot2 创建的堆叠条形图有一个非常烦人的问题.
之前有几个类似的问题被问到,但在浏览示例代码后,我无法弄清楚我做错了什么。

我想制作图表,以便根据它们的 Biogeographic.affinity 按以下顺序堆叠条形图:(从上到下= Bassian、Widespread、Torresian 和 Eyrean)。条形的颜色应该是:(Bassian=drakgrey,Widespread=lightgrey,Torresian=white,Eyrean=black)。

这是数据集的样子:

  biogeo
Site Biogeographic.affinity Rank Number.of.species Total.Species Percent
1 A Bassian 1 1 121 0.8264463
2 A Eyrean 4 39 121 32.2314050
3 A Torresian 3 62 121 51.2396694
4 A Widespread 2 19 121 15.7024793
5 DD Bassian 1 1 128 0.7812500
6 DD Eyrean 4 46 128 35.9375000
7 DD Torresian 3 63 128 49.2187500
8 DD Widespread 2 18 128 14.0625000
9 E_W Bassian 1 1 136 0.7352941
10 E_W Eyrean 4 54 136 39.7058824
11 E_W Torresian 3 65 136 47.7941176
12 E_W Widespread 2 16 136 11.7647059
13 KS Bassian 1 2 145 1.3793103
14 KS Eyrean 4 63 145 43.4482759
15 KS Torresian 3 62 145 42.7586207
16 KS Widespread 2 18 145 12.4137931
17 Z_Ka Bassian 1 1 110 0.9090909
18 Z_Ka Eyrean 4 64 110 58.1818182
19 Z_Ka Torresian 3 31 110 28.1818182
20 Z_Ka Widespread 2 14 110 12.7272727

这是我到目前为止编写的代码(包括我纠正问题的一些失败尝试)。
 ggplot(data=biogeo, aes(x=Site, y=Percent, fill=Biogeographic.affinity)) + geom_bar(stat="identity", colour="black")+ 
scale_fill_grey() + ylab("Percent") + xlab("Location") +
theme_bw()+ theme(panel.grid.minor = element_blank())

这给出了基本图形,但颜色和顺序仍然是错误的。为了更正我尝试过的顺序,但这并没有改变任何东西(沮丧)!:
newone <- transform(biogeo, Biogeographic.affinity  = factor(Biogeographic.affinity ), Rank = factor(Rank, levels = 1:4))

至于颜色变化,我已经尝试过并且似乎有效,但看起来顺序仍然是错误的!
cols<- c("Bassian"="darkgrey","Widespread"="lightgrey", "Torresian"="white", "Eyrean"="black") #designates the colors of the bars 
ggplot(data=newone, aes(x=Site, y=Percent, fill=Biogeographic.affinity)) + geom_bar(stat="identity", colour="black")+
scale_fill_manual(values = cols) + ylab("Percent") + xlab("Location") +
theme_bw()+ theme(panel.grid.minor = element_blank())

请帮忙。

最佳答案

在 ggplot2 的堆叠条形图中绘制条形图的顺序(从下到上)基于定义组的因子的排序。所以必须对 Biogeographic.affinity 因子重新排序。一般我们使用reorder (如果我们想根据连续水平对因子进行排序)但在这里我将创建一个类似于您尝试做的新的有序因子。

 biogeo <- transform(biogeo, 
Biog.aff.ord = factor(
Biogeographic.affinity ,
levels=c( 'Bassian','Widespread','Torresian', 'Eyrean'),
ordered =TRUE))

现在,如果您使用 填充条形图Biog.aff.ord 而不是原始因子并通过定义 覆盖默认分组顺序aes_group_order 作为 Biog.aff.ord 命令你会得到预期的结果:
cols <- c(Bassian="darkgrey",Widespread="lightgrey", 
Torresian="white", Eyrean="black")
ggplot(data=biogeo, aes(x=Site, y=Percent,
order=Biog.aff.ord)) + ##!! aes_group_order
geom_bar(stat="identity", colour="black",
aes(fill=Biog.aff.ord)) +
scale_fill_manual(values = cols)

enter image description here

关于r - ggplot2 条形图中条形的顺序和颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17331892/

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