如何手动更改堆叠 + 分组 ggplot 条形图的堆叠部分的分组
How to manually change grouping of just stacked portion of a stacked + grouped ggplot bar-chart
我正在按照此 post 中给出的示例创建分组堆叠条形图:How to produce stacked bars within grouped barchart in R
来自 post:
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)
您之前使用的这种方法只是按值的顺序排列值。
melted2 <- melted %>%
arrange(desc(variable))
更适用于连续向量。您实际上需要更改因子的水平。您可以使用此检查级别:
levels(melted$variable)
[1] "value1" "value3" "value2"
melted$variable
已经是一个因素,但您只需要将默认级别覆盖为您想要的。
我正在按照此 post 中给出的示例创建分组堆叠条形图:How to produce stacked bars within grouped barchart in R
来自 post:
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)
您之前使用的这种方法只是按值的顺序排列值。
melted2 <- melted %>%
arrange(desc(variable))
更适用于连续向量。您实际上需要更改因子的水平。您可以使用此检查级别:
levels(melted$variable)
[1] "value1" "value3" "value2"
melted$variable
已经是一个因素,但您只需要将默认级别覆盖为您想要的。