堆积的barplot用不同的颜色

时间:2015-04-15 12:03:13

标签: r if-statement bar-chart stacked-chart

我有一个矩阵X,它有5列和3825行(占天数)。值为01NA

  station1  station2    station3    station4    station5
     0          0          0            0          0
     1          0          0            0          0
     1          1          0            0          0
     0          1          0            0          
     0          0          0            0          

我想创建一个水平条形图,其长度为x轴3825和6个条形,每列一个。 如果单元格中的值为1,那么我希望它是红色,如果不是,我希望它是黑色的。我不想总结每一栏中的所有1,并向我展示总和。 我想这样做是为了有5个水平条,颜色为红色和黑色,以便更容易检查1s存在多于1个工作站时是否存在日行。

我感谢任何帮助,我一直在寻找答案。我想过:

barplot((c(X[,1],X[,2],X[,3],X[,4],X[,5]),nr=5), width=1, space=1,main="Heatwaves Dates", beside=FALSE, xlab="Days",  ylab="Stations",  ifelse(X==1, "red","black"), horiz=TRUE, xlim=c(1,3825),xpd=TRUE,border=NA,  names.arg=1:5, cex.names=0.75, las=1)

但显然它不起作用。

1 个答案:

答案 0 :(得分:0)

您似乎在寻找热图,而不是堆积的条形图

set.seed(1)
X <- matrix(as.numeric(runif(3825*5)<0.4),ncol=5,
  dimnames=list(NULL,paste0("station",1:5)))
heatmap(t(X),Rowv=NA,Colv=NA,col=c("black","red"),labCol="")

heatmap

使用axis()根据需要向x轴添加标签。请查看?heatmap以获取更多信息。