【发布时间】:2022-03-03 10:47:04
【问题描述】:
here 和 here 提出了类似的问题。但是,它们并不能完全解决我的问题。
我正在尝试绘制热图。但是然后在热图的每个图块上,我想放置一个 png。到目前为止,这是我的代码:
library(ggplot2)
library(png)
library(grid)
# get png
img <- readPNG(system.file("img", "Rlogo.png", package="png"))
g <- rasterGrob(img, interpolate=TRUE)
# create heatmap
x <- LETTERS[1:5]
y <- paste0("var", seq(1,5))
data <- expand.grid(X=x, Y=y)
data$Z <- runif(25, 0, 5)
# Heatmap
p <- ggplot(data, aes(X, Y, fill= Z)) +
geom_tile() +
theme(aspect.ratio = 1)
# place png
p +
annotation_custom(g, xmin = 0.5, xmax = 1.5, ymin = 0.5, ymax = 1.5)
上面的代码绘制了这个:
但我想要做的是将 png 放在每个图块上,然后热图。现在,我可以像这样检索每个图块的坐标:
b <- ggplot_build(p)
b$data[[1]]$xmin
b$data[[1]]$xmax
b$data[[1]]$ymin
b$data[[1]]$ymax
但我不知道如何在每个图块上放置 png。我希望不必为每个图块都有一个annotation_custom 参数。我正在尝试使流程自动化。
有什么办法可以做到吗?
【问题讨论】: