(对不起,如果我的英语不完美...... :-s)
我的问题与本主题几乎相同: 使用列表中的数据创建填充等高线图
但是,不同之处在于我想绘制与我的 (x,y) 坐标相对应的密度,仅在 1 个方向上!我解释一下:我有一个这样的data.frame:
X <- matrix(c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3), nrow=4)
Y <- matrix(c(-1.0190, -0.9617, -0.9044, -0.8470, -1.0617, -0.9641, -0.8664, -0.7688, 0.4623, 0.6012, 0.7401, 0.8790), nrow=4)
Z <- matrix(c(3.9216, 3.9216, 3.9216, 11.7647, 1.9608, 1.9608, 1.9608, 11.7647, 1.9608, 1.9608, 9.8039, 9.8039), nrow=4)
Niveau <- data.frame(X=c(X),Y=c(Y),Z=c(Z))
X 表示 x 坐标,Y 表示 y 坐标,Z 表示仅在 Y 方向上的百分比密度。对于每个 x 坐标,我计算了 Y 方向的密度。结果在 Z 向量中。您可以看到它不是(x,y)中的常规网格。我想绘制密度 Z 的“等高线图”,但到目前为止,我没有成功......我尝试了这个命令:
ggplot(Niveau, aes(x=X, y=Y, z=Z)) + geom_density2d()
但它绘制了 x 和 y 方向的密度,我只想要 Y 方向。当我尝试命令时:
filled.contour(t(Z), nlevels=10)
它不尊重 (x,y) 坐标。并且不可能实现:
filled.contour(X,Y,Z, nlevels=10)
经过一些研究,我发现了这个主题,我的问题是一样的: 当数据不在常规网格上时如何绘制等高线图?
但答案并不对应:解决方案是(x,y)中的“常规网格”,这不是我所拥有的!有人可以帮忙吗?
谢谢 !