如何在R中以固定网格图案绘制“矩阵”

时间:2015-08-26 07:28:04

标签: r plot ggplot2

我有一个大数据框。前6行的样本如下:

> temp
  M1 M2 M3 M4 M5 M6
1  1  1  1  1  1  1
2  1  1  1  1  1  1
3  0  1  0 -1  1  0
4  1  1  1  1  1  1
5  0  0  0 -1  0  1
6  0  0  0  0  0  0
> dput(temp)
structure(list(M1 = c(1, 1, 0, 1, 0, 0), M2 = c(1, 1, 1, 1, 0, 
0), M3 = c(1, 1, 0, 1, 0, 0), M4 = c(1, 1, -1, 1, -1, 0), M5 = c(1, 
1, 1, 1, 0, 0), M6 = c(1, 1, 0, 1, 1, 0)), .Names = c("M1", "M2", 
"M3", "M4", "M5", "M6"), row.names = c(NA, -6L), class = "data.frame")

数据框只有值-1,0和1.总行数为2,156。我想要做的是绘制一个“网格”格式,其中每行由6个正方形组成(每列一个)。然后为这三个值中的每一个分配一种颜色(例如,红色,绿色,蓝色)。

我尝试用heatmap.2做这个(但是我不能显示明显的方块)。

我尝试使用带有geom_points()的ggplot2来做到这一点,但无法找到最好的方法。

如何有效地做到这一点的任何帮助将非常感谢!

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为geom_tile()是一个更好的选择,结合重塑到长期。

library(ggplot2)
library(reshape2)

#assign an id to plot rows to y-axis
temp$id <- 1:nrow(temp)

#reshape to long
m_temp <- melt(temp, id.var="id")


p1 <- ggplot(m_temp, aes(x=variable,
                         y=id,fill=factor(value))) +
               geom_tile()

p1

enter image description here

答案 1 :(得分:1)

您可以使用ggplot执行以下操作:

library(ggplot2)
dd <- expand.grid(x = 1:ncol(temp), y = 1:nrow(temp))
dd$col <- unlist(c(temp))
ggplot(dd, aes(x = x, y = y, fill = factor(col))) + geom_tile() 

enter image description here