library(tidyverse)
## make data
set.seed(3)
dat <- matrix(runif(100, 0, 1), ncol=10)
## reshape data (tidy/tall form)
dat2 <- dat %>%
tbl_df() %>%
rownames_to_column('Var1') %>%
gather(Var2, value, -Var1) %>%
mutate(
Var1 = factor(Var1, levels=1:10),
Var2 = factor(gsub("V", "", Var2), levels=1:10)
)
## plot data
frames <- data.frame(Var1 = c(1, 1, 3, 4),
Var2 = c(8, 10, 3, 2))
ggplot(dat2, aes(Var1, Var2)) +
geom_tile(aes(fill = value)) +
geom_text(aes(label = round(value, 1))) +
scale_fill_gradient(low = "white", high = "red") +
geom_rect(data=frames, size=1, fill=NA, colour="black",
aes(xmin=Var1 - 0.5, xmax=Var1 + 0.5, ymin=Var2 - 0.5, ymax=Var2 + 0.5))
我在这里有一个热图,并且已经对其进行了自定义,以便通过指定名为frames
的data.frame来包含某些瓷砖的位置,然后将其传递到{{1 }}。
我想在2个图块中完全遮盖黑色,但将文本颜色更改为白色。以下data.frame包含这2个图块的位置:
geom_rect
我可以使用哪个功能?
答案 0 :(得分:1)
覆盖另一个geom_tile ...我在这里添加了最后一个语句,而不是您的矩形。这使您得到黑色矩形。我认为最后一行将显示白色文本,但是frames数据框架需要在其中包含这些文本值。由于 value 不在帧中,因此现在会出现错误。
ggplot(dat2, aes(Var1, Var2)) +
geom_tile(aes(fill = value)) +
geom_text(aes(label = round(value, 1))) +
scale_fill_gradient(low = "white", high = "red") +
geom_tile(data=frames,fill="black") #+
#geom_text(data=frames,aes(label = round(value, 1)),colour="white")