Я хотел бы нарисовать карту тепла для некоторого набора данных.
Первоначально я использовал функции тепловых карт с удовлетворительными результатами. Тем не менее, так как все мои другие графики сделаны с ggplot2, я попытался сделать это и с ggplot2. Тем не менее, я получаю странные графики, и я не уверен, в чем причина.
Мне дан следующий набор данных:
> dput(B)
structure(list(`2001` = c(510, 15, 14, 9, 8, 11, 7, 5, -1, -3),
`2002` = c(397, -13, 5, 6, 12, -1, 0, 2, 5, 3),
`2003` = c(323, -6, -2, 1, 0, 6, -5, -2, 1, 4),
`2004` = c(133, -2, 2, -4, 0, 5, 8, -2, 0, 1),
`2005` = c(-100, -8, -6, -2, 1, 2, 2, 3, -6, -5),
`2006` = c(-114, -7, 2, -4, -2, 0, 1, 2, 4, -3),
`2007` = c(-130,-13, 0, 4, -3, -2, -1, 1, 2, 4),
`2008` = c(-38, -10, 4, 0, 3, 4, 2, 0, 0, 1),
`2009` = c(-194, -13, -5, -4, -3, -1, 0, 1, 1, 1),
`2010` = c(-202, -6, 0, -1, -5, -2, -3, -1, 2, -2)),
row.names = 0:9, class = "data.frame")
Сейчас используется,
> heatmap(as.matrix(B), Colv = NA, Rowv = NA, col = cm.colors(10))
Я получаю следующую тепловую карту, которая выглядит разумной.
С другой стороны, с
C <- B
C$size <- row.names(C)
C <- melt(C, variable.name="year",id=c("size"))
ggplot(data = C) +
geom_tile(aes(x = year, y = size, fill = value)) +
scale_fill_gradientn(colors=cm.colors(10))
Я получаю следующее
Почему это? И как я могу исправить это так, что я получаю сюжет, похожий на первый?