Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用ggplot2创建具有散点图平均值的栅格和彩色单元格_R_Data Visualization_Ggplot2_Aggregation - Fatal编程技术网

R 使用ggplot2创建具有散点图平均值的栅格和彩色单元格

R 使用ggplot2创建具有散点图平均值的栅格和彩色单元格,r,data-visualization,ggplot2,aggregation,R,Data Visualization,Ggplot2,Aggregation,给定一个具有N个点的数字数据集{(x_i,y_i,z_i)},可以通过为每个i=1,…,N绘制点p_i=(x_i,y_i)来创建散点图,并根据z_i的值为每个点着色 library(ggplot2) N = 1000; dfA = data.frame(runif(N), runif(N), runif(N)) dfB = data.frame(runif(N), runif(N), runif(N)) names(dfA) = c("x", "y", "z") names(dfB) = c("

给定一个具有N个点的数字数据集{(x_i,y_i,z_i)},可以通过为每个i=1,…,N绘制点p_i=(x_i,y_i)来创建散点图,并根据z_i的值为每个点着色

library(ggplot2)
N = 1000;
dfA = data.frame(runif(N), runif(N), runif(N))
dfB = data.frame(runif(N), runif(N), runif(N))
names(dfA) = c("x", "y", "z")
names(dfB) = c("x", "y", "z")

PlotA <- ggplot(data = dfA, aes(x = x, y = y)) + geom_point(aes(colour = z));
PlotB <- ggplot(data = dfB, aes(x = x, y = y)) + geom_point(aes(colour = z));
库(ggplot2)
N=1000;
dfA=data.frame(runif(N)、runif(N)、runif(N))
dfB=data.frame(runif(N)、runif(N)、runif(N))
名称(dfA)=c(“x”、“y”、“z”)
名称(dfB)=c(“x”、“y”、“z”)

PlotA使用
stat\u summary2d
函数划分平面并计算矩形的摘要非常简单。首先,我将创建显式中断,而不是让
ggplot
选择它们,这样两个图的中断将完全相同

bb<-seq(0,1,length.out=10+1)
breaks<-list(x=bb, y=bb)

p1 <- ggplot(data = dfA, aes(x = x, y = y, z=z)) + 
    stat_summary2d(fun=mean, breaks=breaks) + ggtitle("A");
p2 <- ggplot(data = dfB, aes(x = x, y = y, z=z)) + 
    stat_summary2d(fun=mean, breaks=breaks) + ggtitle("B");

bb如果您提供了一个示例数据集,这将更容易回答。通过这种方式,我们nca编写代码并测试它是否与(理论上)与您实际使用的输入类似。有关包含样本数据的提示,请参阅。为什么我的问题被否决?
#get data
d1 <- ggplot_build(p1)$data[[1]][, 2:4]
d2 <- ggplot_build(p2)$data[[1]][, 2:4]
mm <- merge(d1, d2, by=c("xbin","ybin"))

#turn factor back into numeric values
mids <- diff(bb)/2+bb[-length(bb)]

#plot difference
ggplot(mm, aes(x=mids[xbin], y=mids[ybin], fill=value.x-value.y)) + 
   geom_tile() + scale_fill_gradient2(name="diff") + labs(x="x",y="y")