R 如何手动更改堆叠+分组ggplot条形图中刚堆叠部分的分组
我遵循本文中给出的创建分组和堆叠条形图的示例: 从该职位:R 如何手动更改堆叠+分组ggplot条形图中刚堆叠部分的分组,r,ggplot2,bar-chart,geom-bar,R,Ggplot2,Bar Chart,Geom Bar,我遵循本文中给出的创建分组和堆叠条形图的示例: 从该职位: library(reshape2) library(dplyr) library(ggplot2) test <- data.frame(person=c("A", "B", "C", "D", "E"), value1=c(100,150,120,80,150), value2=c(25,30,45,30,30) ,
library(reshape2)
library(dplyr)
library(ggplot2)
test <- data.frame(person=c("A", "B", "C", "D", "E"),
value1=c(100,150,120,80,150),
value2=c(25,30,45,30,30) ,
value3=c(100,120,150,150,200))
melted <- melt(test, "person")
melted$cat <- ''
melted[melted$variable == 'value1',]$cat <- "first"
melted[melted$variable != 'value1',]$cat <- "second"
ggplot(melted, aes(x = cat, y = value, fill = variable)) +
geom_bar(stat = 'identity', position = 'stack') +
facet_grid(~ person)
如上所述,绘图将value2置于value3之上
我想做的是改变堆叠部分的顺序,即;我想把value3放在value2之上
我尝试手动更改变量的顺序:
melted2 <- melted %>%
arrange(desc(variable))
ggplot(melted2, aes(x = cat, y = value, fill = variable)) +
geom_bar(stat = 'identity', position = 'stack') +
facet_grid(~ person)
但绘图输出看起来与第一个相同。本质上,输入数据的重新排序并不能完成任务
提前谢谢你 这应该行得通,尽管我不清楚您希望这些产品的确切顺序。但您可以使用级别来实现这一点:
melted$variable <- factor(melted$variable, levels = c("value1","value3","value2"))
ggplot(melted, aes(x = cat, y = value, fill = variable)) +
geom_bar(stat = 'identity', position = 'stack') +
facet_grid(~ person)
[1] 值1值3值2
融化的$variable已经是一个因素,但您只需要将默认级别覆盖到您想要的级别 太好了!成功了。如果允许的话,我会在3分钟内接受答案。可能会重复或阅读我的帖子。我试着重新排序,如那篇文章所示。没有迹象表明你已经重新排序了级别-只是值。您需要明确地对因子级别进行排序。尝试?因素?或?重新排序。
melted2 <- melted %>%
arrange(desc(variable))
levels(melted$variable)