R 分组条形图中系数的更改顺序

R 分组条形图中系数的更改顺序,r,ggplot2,bar-chart,reverse,R,Ggplot2,Bar Chart,Reverse,我有以下代码: 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 granate

我有以下代码:

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"))
但这并没有改变顺序。 我对r很陌生,不知道怎么做。如有任何帮助,我将不胜感激

以下是源的dput输出:

dputla4 structurelistSpecies_Name=structurec9L、12L、13L、14L、, 19L、22L、27L、46L、41L、42L、10L、15L、32L、33L、24L,标签=cButeo platypterus, 拉特兰犬、灵气犬、未知犬、乌斯图拉犬、, 卷尾猴,索氏体未知,半纹状体锥虫, 红角、肉桂隐孢子虫、帕卡锥虫、点状锥虫、, 新墨西哥州达西波斯,有袋动物迪德尔菲斯,埃拉·芭芭拉, 蒙大拿州地龙、紫地龙、, 未知的异口鱼,四线黑鲷,大鼠, 豹纹豹,豹纹豹,未知细纹豹, Melozone未知,野牛掌尾蛇,成龙鼻, 维吉尼亚奥多科里厄斯、黑豹、新巴科利西亚、, Pecari tajacu,Penelopina nigra,飞龙负鼠,Piaya cayana, 普罗西恩·洛托、美洲狮、美洲狮、格拉纳坦西斯, 杂色Sciurus variegatoides,Setophaga未知,Sylvilagus sp, 墨西哥塔曼杜亚病毒、贝尔迪病毒、佩卡里病毒、筋膜虎纹伊蚊、, 蒂那穆斯大草原,等级=因子,森林面积350ha=c0.16346538, 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=cNA, 15L,类=data.frame


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

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

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数据。

如何:ggplotaesx=forcats::fct\u revSpecies\u Name。。。?提出一个人们可以帮助解决的问题。这包括一个数据样本和一些输出也许,这个答案给出了一些提示。谢谢你,艾莉森,我试过了,但它不管用。相反,我手动创建了一个反向顺序,并添加了该反向顺序,该顺序按照我希望的顺序生成了图形,但为了防止您感兴趣,我添加了数据帧的dput输出。有趣的是,我不确定dput。如果在调用ggplot之前将物种名称定义为lala4数据中的一个有序因子,可能会起作用。不管怎样,你找到了解决问题的办法。也许其他人知道原因。如果你提供一个可复制的例子,人们会更容易提供帮助,然后人们可以自己测试它,并为你提供一个清晰的解决方案。看看上面@camille写的便条。艾莉森:!谢谢你的回复。
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"))