基于 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)
我有一个数据集,我正在 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)