我有一个大数据框。前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来做到这一点,但无法找到最好的方法。
如何有效地做到这一点的任何帮助将非常感谢!
谢谢!
答案 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
答案 1 :(得分:1)