Мозаичный сюжет / черно-белый сюжет для чайников

У меня есть набор данных, состоящий из чайников, который выглядит следующим образом:

# 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:

Я пробовал несколько разных пакетов, таких как ggplot2 или же vcd, но, к сожалению, я не смог произвести точно такой же сюжет. Любая помощь или любой совет для пакета высоко ценится!

2 ответа

Решение

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)

Вот использование 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()

введите описание изображения здесь

Другие вопросы по тегам