首页 > 解决方案 > 更改分组条形图中因子的顺序

问题描述

我有以下代码:

figg4 <- lala4 %>% gather(key, value, -Species_Name) %>%  
  mutate (Species_Name = factor(Species_Name, 
levels=c('Dasyprocta punctata',
'Cuniculus paca','Large Rats',
 'Heteromys unknown', 'Sciurus variegatoides',
 'Sciurus granatensis','Dasypus novemcinctus',
'Didelphis marsupialis',  'Philander opossum',
'Metachirus nudicaudatus', 'Nasua narica',
 'Procyon lotor', 'Eira barbara',
'Galictis vittata', 'Leopardus pardalis'))) %>% 
 ggplot(aes(x=Species_Name, y=value, 
             fill=key)) + coord_flip() + geom_col (position = "stack") +
theme(panel.background = element_blank()) + bbc_style() +
  labs(title = "Species occupancy by Site Type")+
  scale_fill_manual(values = c("#333333","#1380A1", "#FAAB18"))

我得到以相反顺序列出名称的条形图,我想让它们按照我在其中写入级别的顺序出现......我该怎么做?

我尝试通过添加以下代码来使用来自 forcats 的 fct_reorder

mutate(name = fct_reorder(Species_Name, desc(value)))

但这并没有改变顺序。我对 r 很陌生,不知道该怎么做。将不胜感激任何帮助

这是源的 dput 输出:

dput(lala4)结构(列表(物种名称=结构(c(9L,12L,13L,14L,19L,22L,27L,46L,41L,42L,10L,15L,32L,33L,24L),.Label = c( “Buteo platypterus”、“Canis latrans”、“Cathartes aura”、“Catharus unknown”、“Catharus ustulatus”、“Cebus capucinus”、“Chordeiles unknown”、“Conepatus semistriatus”、“Crax rubra”、“Crypturellus cinnamomeus”、 “Cuniculus paca”、“Dasyprocta punctata”、“Dasypus novemcinctus”、“Didelphis marsupialis”、“Eira barbara”、“Galictis vittata”、“Geotrygon montana”、“Geotrygon violacea”、“Heteromys unknown”、“Holcosus quadrilineatus”、 “大老鼠”、“豹纹”、“Leopardus wiedii”、“Leptotila 未知”、“Melozone 未知”、“Metachirus nudicaudatus”、“Nasua narica”、“Odocoileus virginianus”、“Panthera onca”、“Parkesia noveboracensis”、“Pecari tajacu”、“Penelopina nigra”、“ Philander opossum”、“Piaya cayana”、“Procyon lotor”、“Puma concolor”、“Puma yagouaroundi”、“Sciurus granatensis”、“Sciurus variegatoides”、“Setophaga unknown”、“Sylvilagus sp”、“Tamandua mexicana”、“ Tapirus bairdii”、“Tayassu pecari”、“Tigrisoma fasciatum”、“Tinamus major”)、class = “factor”)、Metachirus nudicaudatus”、“Nasua narica”、“Odocoileus virginianus”、“Panthera onca”、“Parkesia noveboracensis”、“Pecari tajacu”、“Penelopina nigra”、“Philander opossum”、“Piaya cayana”、“Procyon lotor”、“ Puma concolor”、“Puma yagouaroundi”、“Sciurus granatensis”、“Sciurus variegatoides”、“Setophaga unknown”、“Sylvilagus sp”、“Tamandua mexicana”、“Tapirus bairdii”、“Tayassu pecari”、“Tigrisoma fasciatum”、“ Tinamus major"), class = "factor"),Metachirus nudicaudatus”、“Nasua narica”、“Odocoileus virginianus”、“Panthera onca”、“Parkesia noveboracensis”、“Pecari tajacu”、“Penelopina nigra”、“Philander opossum”、“Piaya cayana”、“Procyon lotor”、“ Puma concolor”、“Puma yagouaroundi”、“Sciurus granatensis”、“Sciurus variegatoides”、“Setophaga unknown”、“Sylvilagus sp”、“Tamandua mexicana”、“Tapirus bairdii”、“Tayassu pecari”、“Tigrisoma fasciatum”、“ Tinamus major"), class = "factor"),Pecari tajacu”、“Penelopina nigra”、“Philander opossum”、“Piaya cayana”、“Procyon lotor”、“Puma concolor”、“Puma yagouaroundi”、“Sciurus granatensis”、“Sciurus variegatoides”、“Setophaga unknown”、“ Sylvilagus sp”,“Tamandua mexicana”,“Tapirus bairdii”,“Tayassu pecari”,“Tigrisoma fasciatum”,“Tinamus major”),class =“factor”),Pecari tajacu”、“Penelopina nigra”、“Philander opossum”、“Piaya cayana”、“Procyon lotor”、“Puma concolor”、“Puma yagouaroundi”、“Sciurus granatensis”、“Sciurus variegatoides”、“Setophaga unknown”、“ Sylvilagus sp”,“Tamandua mexicana”,“Tapirus bairdii”,“Tayassu pecari”,“Tigrisoma fasciatum”,“Tinamus major”),class =“factor”),“Tapirus bairdii”、“Tayassu pecari”、“Tigrisoma fasciatum”、“Tinamus major”)、class = “factor”)、“Tapirus bairdii”、“Tayassu pecari”、“Tigrisoma fasciatum”、“Tinamus major”)、class = “factor”)、Forest Area (<5ha)= c(0.067307692, 0.134615385, 0.173076923, 0.144230769, 0.019230769, 0.086538462, 0.192307692, 0.009615385, 0.163461538, 0.038461538, 0, 0.019230769, 0, 0.163461538, 0.153846154), Forest Area (5-27ha)= c(0.067307692, 0.317307692, 0.269230769, 0.096153846, 0.038461538, 0.105769231, 0.192307692 , 0.115384615, 0.134615385, 0.057692308, 0, 0.096153846, 0, 0.076923077, 0.173076923), Forest Area (>350ha)= c(0.163461538, 0.384615385, 0.278846154, 0.201923077, 0.105769231, 0.067307692, 0.144230769, 0.298076923, 0.028846154, 0.048076923, 0.086538462, 0.038461538, 0.019230769, 0.028846154, 0.125 )), row.names = c(NA, 15L), class = "data.frame")

标签: rggplot2bar-chartreverse

解决方案


您需要首先将因子重新定义为有序因子。

尝试通过添加来修复定义因子的代码

ordered = TRUE

这应该可以工作:

figg4 <- lala4 %>% gather(key, value, -Species_Name) %>%  
  mutate (Species_Name = factor(Species_Name, 
levels=c('Dasyprocta punctata',
'Cuniculus paca','Large Rats',
 'Heteromys unknown', 'Sciurus variegatoides',
 'Sciurus granatensis','Dasypus novemcinctus',
'Didelphis marsupialis',  'Philander opossum',
'Metachirus nudicaudatus', 'Nasua narica',
 'Procyon lotor', 'Eira barbara',
'Galictis vittata', 'Leopardus pardalis'), ordered = TRUE)) %>% 
 ggplot(aes(x=Species_Name, y=value, 
             fill=key)) + coord_flip() + geom_col (position = "stack") +
theme(panel.background = element_blank()) + bbc_style() +
  labs(title = "Species occupancy by Site Type")+
  scale_fill_manual(values = c("#333333","#1380A1", "#FAAB18"))

我无法运行它,因为我没有lala4要测试的数据。


推荐阅读