2

我有一个由假人组成的数据集,如下所示:

# Example data
set.seed(123)
data <- data.frame(x1 = rbinom(10, 1, 0.3),
                   x2 = rbinom(10, 1, 0.6),
                   x3 = rbinom(10, 1, 0.5))

我想创建一个马赛克图/网格图(实际上我不确定应该如何调用这样的图),其中每个 1 值显示为黑色,每个 0 值显示为白色。显示的行之间不应有空格或任何其他颜色。

可以在第 97 页的本文中找到我想创建的绘图示例:

在此处输入图像描述

我尝试了几个不同的包,比如ggplot2or vcd,但不幸的是我无法制作完全相同的情节。非常感谢任何有关软件包的帮助或任何提示!

4

2 回答 2

3

image函数可能是用颜色显示矩阵的最简单方法。您需要转置和反转它以使顺序正确

image(t(as.matrix(data[nrow(data):1, ])), col = c(0, 1), axes = FALSE)
axis(1, seq(0, 1, l = ncol(data)), seq_len(ncol(data)))
axis(2, seq(0, 1, l = nrow(data)), seq_len(nrow(data)))
legend(1.1, 0, c(0:1), fill = c(0, 1), xpd = TRUE)

在此处输入图像描述

于 2017-06-30T10:46:46.480 回答
2

这是使用ggplot

library(ggplot2)
library(tidyr) #to convert wide to long format

plotDat <- gather(data, key = "x", value = "Estimate")
plotDat <- cbind(plotDat, y = 1:10)
plotDat$Estimate <- as.factor(plotDat$Estimate)

ggplot(plotDat, aes(x, y, fill = Estimate)) +
  geom_tile()

在此处输入图像描述

于 2017-07-03T06:56:00.713 回答