【问题标题】:stacked barplot with different colours不同颜色的堆积条形图
【发布时间】:2015-04-15 12:03:12
【问题描述】:

我有一个矩阵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)

但显然它不起作用。

【问题讨论】:

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


    【解决方案1】:

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

    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

    【讨论】:

    • 谢谢。这正是我正在寻找的。但是 runif(3825*5)
    • 这只是创建了一个包含 40% 和 60% 零的随机矩阵,所以我可以发布一个示例。
    猜你喜欢
    • 2021-12-02
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多