ggplot 将两个轴的函数作为光栅?

ggplot a function of both axes as a raster?

我想用 x 轴和 y 轴的函数填充光栅。我最好的猜测是这样的:

library(ggplot2)

df <- data.frame(x = c(-20,20), y = c(-20,20))
f <- function (x, y) x * y

ggplot(df, aes(x,y)) +
    stat_function(fun = f, geom="raster")

很明显,创建矩阵、用值填充它、将其转换为光栅对象并将其转换为点有一个变通方法,但是有更简单的方法吗?

此类任务的主要思想是(正如您自己所说)预先计算值并将它们提供给 ggplot。没有“直接”的方式来做你所要求的(至少据我所知),但你可以把这个片段并将它包装到你自己的 geom 中。另请查看 this 问题。

coords <- expand.grid(x=seq(-20, 20, by=0.5), y=seq(-20, 20, by=0.5))
coords$value <- apply(coords, 1, FUN=function(x) prod(x))
ggplot(coords, aes(x, y, fill=value)) + 
  geom_raster()

分辨率由by控制,很明显。