将轮廓图从标准R转换为ggplot

问题描述 投票:0回答:1

我正在努力寻找如何将标准R中的轮廓图转换为ggplot2中的轮廓图。

在R中,函数轮廓的自变量是2个值向量和一个要绘制的值矩阵。

例如,考虑以下代码

X=seq(from=1,to=100,length=100)
Y=seq(from=300,400,length=100)

M=matrix(NA,100,100)

for (i in seq_along(X)){
  for (j in seq_along(Y)){
    M[i,j]=log(j)*sqrt(i)
  }
}

contour(X,Y,M)

M是一个100x100矩阵,每个条目都是X和Y中每个元素的函数。此代码不会产生错误

现在我正在努力将此示例转换为ggplot。

我尝试以下代码

d=data.frame(X,Y,M)
ggplot(d,aes(x=X,y=Y,z=M))+stat_contour()

现在在我看来,变量z通常也应是长度为100的向量。我觉得我需要做的是对Y中的每个元素重复向量X,并对X中的每个元素重复向量Y,这样X和Y的长度都是100x100 = 10,000个元素。但这对我来说似乎不正确,我也不知道该怎么做。有没有更简单的方法可以从R轮廓转换为ggplot轮廓?

非常感谢。

r ggplot2 contour
1个回答
0
投票

ggplot库喜欢“整洁”格式的数据。在这种情况下,X,Y和Z分别为3列。

解决此问题的关键是获得X和Y的所有组合,并将平方M矩阵转换为向量。 expand.grid将生成X&Y的所有组合的数据帧

© www.soinside.com 2019 - 2024. All rights reserved.