基于 ggplot2 (R) 中的变量对 Y 轴进行排名

Ranking Y-Axis Based on Variable in ggplot2 (R)

我有一个数据集,我正在 ggplot2 中构建堆积条形图。每个观察值(寿命)都位于 y 轴上,条形图与 x 轴值平行延伸。但是,我想根据与 x 轴值(地球、风、火和水)无关但正在从另一个数据集合并的排名对这些变量进行排名。 主要数据:

Life    Earth   Wind    Fire       Water    
A      2.72    1.22    0.860220476  2.86    
B      2.11    1       0.660225123  2.26    
C      0.67    0.31    0.1900664    0.69    

排名数据:

Life Rank
A     3
B     1
C     2

我正在寻找位于 y 轴顶部的生活 B "Bar" 和位于底部的生活 A "Bar"。默认只是按字母顺序排列它们。我如何排序才能让 Rank 1 条在顶部,Rank 3 在底部?

这是我的代码:

require(reshape2)
require(ggplot2)
bars1 <- read.csv("Renown.csv",header=T,skip = 0,stringsAsFactors=FALSE)
Rank <- read.csv("Rank.csv",header=T,skip = 0,stringsAsFactors=FALSE)
bars1 <- aggregate(.~Lifestyle, data=bars1, FUN=mean)
bars1 <- melt(bars1, id.vars = "Life")
bars1 <- merge(bars1, Rank, by="Life")
bars1 <- ggplot(bars1, aes(x = Life, y = value , fill=variable)) + geom_bar(stat='identity')  + coord_flip()

谢谢!

您需要将 Life 转换为基于 Rank

排序的因子
bars1$Life = factor(bars1$Life, levels = Rank[order(-Rank$Rank),]$Life)