Я пытаюсь сделать Heatmaps в R. В принципе, есть два опроса, и я пытался сопоставить, ответил ли кто-либо или не ответил на вопрос. Я был в состоянии сделать один для следующих используя код, приведенный ниже:Ошибка с Heatmap в R
x1 <- c(0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
x2 <- c(0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1)
x3 <- c(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0)
x4 <- c(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0)
x5 <- c(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0)
x6 <- c(0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0)
x <- rbind(x1, x2, x3, x4, x5, x6)
hv <- heatmap(t(x), col = c("Forestgreen", "Darkorange2"), margins = c(4, 12), Colv = NA, Rowv = NA, scale = "column", xlab ="Person", ylab ="", main = "", labCol=c("1", "2", "3", "4", "5", "6"))
legend("topright", c("Non-Missing", "Missing"), col=c("Forestgreen", "Darkorange2"), bty="n", fill=c("Forestgreen", "Darkorange2"))
Хотя Heatmap Образующийся хорошо, один я пытаюсь создать для второго опроса выключен. См. Код ниже:
y1 <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0)
y2 <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
y3 <- rep(c(0, 1), c(34, 2))
y4 <- c(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
y5 <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0)
y6 <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
y7 <- rep(c(0, 1), each=18)
y8 <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
y9 <- c(0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1)
y10 <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
y11 <- c(0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
y12 <- c(0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
y13 <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0)
y <- rbind(y1, y2, y3, y4, y5, y6, y7, y8, y9, y10, y11, y12, y13)
hv <- heatmap(t(y), col = c("Forestgreen", "Darkorange2"), margins = c(4, 12), Colv = NA, Rowv = NA, scale = "column", xlab ="Person", ylab ="", main = "")
legend("topright", c("Non-Missing", "Missing"), col=c("Forestgreen", "Darkorange2"), bty="n", fill=c("Forestgreen", "Darkorange2"))
Я не понимаю, почему существует белая линия, по существу, по оси y2. Особенно, когда не было проблем с первым. Любое понимание было бы полезно. Благодаря!
Проблема в том, что второй столбец имеет значения, которые являются всеми 1.В результате, я думаю, что функция не знает, как назначить цвета, потому что нет никакой разницы в тепловой карте. Мне нужно немного погрузиться в функцию. В качестве доказательства измените одно из значений в y2 на 0, и оно будет выглядеть нормально. – TARehman