-1

我有一个矩阵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 个红色和黑色的水平条,以便更容易检查当 1 出现在超过 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)

但显然它不起作用。

4

1 回答 1

0

您似乎正在寻找一个heatmap,而不是一个堆积的 barplot

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="")

热图

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

于 2015-04-15T12:12:07.013 回答