直方图bin的颜色基于另一个变量的分布

时间:2012-01-31 18:14:11

标签: r

好的,这是一个棘手的问题。这可能是不可能的。

test<-data.frame(var.a=c(1,1,1,1,2,2,2,3,3,3,3,3,4,4,5,5,5,5), var.b=c(1,2,1,3,2,3,4,3,2,2,1,2,1,2,3,4,1,2))

是否可以根据var.b的分布为hist(test $ var.a)直方图的每个bin着色?所以我可以告诉你在hist(test $ var.a)的bin 1中有50%的“ones”,25%的“twos”和24%的“threes”的var.b?每个箱子里面都有某种堆叠的条形物?

我想某种spinogram但是条形不应该具有相同的高度(因为它们代表var.a的频率),并且在每个条形图中var.b的频率应该是彩色编码的。

非常感谢

2 个答案:

答案 0 :(得分:4)

ggplot2正是你正在寻找的东西:

test<-data.frame(var.a=c(1,1,1,1,2,2,2,3,3,3,3,3,4,4,5,5,5,5), var.b=c(1,2,1,3,2,3,4,3,2,2,1,2,1,2,3,4,1,2))

library(ggplot2)
qplot(test$var.a, binwidth = 1, fill = factor(test$var.b))
ggsave("stacked_histogram.pdf")

Stacked histogram

答案 1 :(得分:1)

因为我喜欢Base R

test<-data.frame(var.a=c(1,1,1,1,2,2,2,3,3,3,3,3,4,4,5,5,5,5), 
                 var.b=c(1,2,1,3,2,3,4,3,2,2,1,2,1,2,3,4,1,2))

单行R

barplot(table(test$var.b, test$var.a))

enter image description here