ggplot:基于两个向量的热图
ggplot: heatmap based on two vectors
我正在尝试将数据绘制为 ggplot2
中的热图。我知道您通常必须协调 x
、y
和 z
以绘制 x
对 y
,然后按 [=14= 着色].我发现了很多热图示例,但它们都已经有了 z
向量。
我不明白如何从 data.frame 中的两列生成可用的 z 向量。在我的例子中,每一行代表一个人的数据,每一列都是一个分数(或其他)。示例:
library(ggplot2)
d <- data.frame(x = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE),
y = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE))
ggplot(d, aes(x, y)) + geom_tile()
这会生成图块,但我如何获得 d$z
以便我可以设置 geom_tile(aes(fill=z))
?
我觉得这应该很简单,但我无法理解它。任何指针将不胜感激。
谢谢!
例如,您可以计算每个 x 和 y 组合的观察次数,并将其映射到 fill
:
library(ggplot2)
d <- data.frame(x = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE),
y = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE))
library(dplyr)
group_by(d,x,y) %>% summarize(n=n()) %>%
ggplot(aes(x, y,fill=n)) + geom_tile()
我正在尝试将数据绘制为 ggplot2
中的热图。我知道您通常必须协调 x
、y
和 z
以绘制 x
对 y
,然后按 [=14= 着色].我发现了很多热图示例,但它们都已经有了 z
向量。
我不明白如何从 data.frame 中的两列生成可用的 z 向量。在我的例子中,每一行代表一个人的数据,每一列都是一个分数(或其他)。示例:
library(ggplot2)
d <- data.frame(x = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE),
y = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE))
ggplot(d, aes(x, y)) + geom_tile()
这会生成图块,但我如何获得 d$z
以便我可以设置 geom_tile(aes(fill=z))
?
我觉得这应该很简单,但我无法理解它。任何指针将不胜感激。
谢谢!
例如,您可以计算每个 x 和 y 组合的观察次数,并将其映射到 fill
:
library(ggplot2)
d <- data.frame(x = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE),
y = sample(20, 500, prob=c(1:10, 10:1), replace = TRUE))
library(dplyr)
group_by(d,x,y) %>% summarize(n=n()) %>%
ggplot(aes(x, y,fill=n)) + geom_tile()