以下代码绘制了price作为2d binning carat和depth使用2d binning 的函数的菱形。
library(ggplot2)
data(diamonds)
gp <- ggplot(diamonds,aes(x=carat,y=depth,z=price))
gp <- gp +stat_summary_2d()
gp
Run Code Online (Sandbox Code Playgroud)
我现在想不仅代表价格,还代表另一个连续变量,例如x,另一个颜色通道。因此,蓝色的强度会给我,price而红色的强度会给我x(以及可能会在绿色通道中编码的第三个变量)。
实现此目标的最佳方法是什么?我是否必须手动对数据进行分类,计算汇总并绘制结果栅格,还是有一种更快的方法?
还是可以使用该z值在三个不同的图上执行此操作,然后通过将每个图分配给不同的颜色通道来合并它们?
更新 对于一个更明确的示例,以下代码生成三个图(请参见下文)。我想将它们合并为一个图,每个图与一个颜色通道相关联,这样我在一个图中将有一个红色斑点,一个绿色斑点和一个蓝色博客。
library(ggplot2)
n <- 10000
cx <- c(-1, 0, 1)
cy <- c(0,1,-1)
x <- rnorm(n,0,1)
y <- rnorm(n,0,1)
v <- list()
v <- lapply(seq(3),function(i)dnorm(x,cx[i],0.5)*dnorm(y,cy[i],0.5))
data <- data.frame(x,y,v1=v[[1]]/max(v[[1]]),v2=v[[2]/max(v[[2]]), v3=v[[3]]/max(v[[3]]))
gp1 <- ggplot(data, aes(x=x,y=y,z=v1)) + stat_summary_2d() + scale_colour_identity()
gp2 <- ggplot(data, aes(x=x,y=y,z=v2)) + stat_summary_2d() + scale_colour_identity()
gp3 <- ggplot(data, …Run Code Online (Sandbox Code Playgroud)