我想在 R 中绘制这样的东西。
我在这里找到了一些类似的解决方案,所以我尝试了类似的方法:
test <- data.frame(person=c("group 1", "group 2", "group 3"),
value1=c(100,150,120), # male
value2=c(25,30,45) , # female
value3=c(25,30,45), # male
value4=c(100,120,150), # female
value5=c(10,12,15), # male
value6=c(50,40,70)) # female
library(reshape2) # for melt
melted <- melt(test, "person")
melted$cat <- ''
melted[melted$variable == 'value1' | melted$variable == 'value2',]$cat <- "sub group 1"
melted[melted$variable == 'value3' | melted$variable == 'value4',]$cat <- "sub group 2"
melted[melted$variable == 'value5' | melted$variable == 'value6',]$cat <- "sub graoup 3"
p = ggplot(melted, aes(x = cat, y = value, fill = variable))
+ geom_bar(stat = 'identity', position = 'stack') + facet_grid(~ person)
我结束的是:
问题是现在我有 6 个不同的值和 6 种不同的颜色。我真正想要的是 2 个不同的值,我们称之为主题male
并由female
2 种不同的颜色表示。
我怎样才能在 R 中做到这一点?可以以任何不同的方式构造数据(不必像上面那样使用 data.frame)。我不需要使用ggplot
. 事实上,我更喜欢示例图像中的白色干净背景,而不是使用 ggplot 获得的灰色背景。