好的,根据您的意见,我相信这是您的解决方案。在cols< -...之后放置这些行:
#create df to sort by argiculture's percentage ag<-filter(df, landuse=="agriculture") #use the df to sort and order df$id's levels df$id<-factor(df$id, levels=ag$id[order(ag$percent)], ordered = TRUE) #sort df, based on ordered ids and ordered landuse df<-df[order(df$id, df$landuse.ord),] ggplot(df,aes(x = id, y = percent, fill = landuse.ord, order=landuse.ord)) + geom_bar(position = "stack",stat = "identity", width=1) + coord_flip() + scale_fill_manual(values = cols)
评论应阐明每一行的目的。这将重新排序您的原始数据框,如果这是一个问题,我会创建一个副本,然后操作新的副本。