离散对象中的ggplot2 geom_contour

时间:2011-12-21 08:54:09

标签: r ggplot2 contour

我正在尝试使用不同密度点为视网膜中的密度细胞制作地形图。 volcano3d的例子非常好,它给了我这个想法,所以我想我会根据这个例子来说明我的问题。 我的问题是,如果我有一个岛的轮廓,x,y坐标绘制为geom_path,是否可以在路径内构建等高线图? 我试着这样做,但是r告诉我问题是我的x和y轴不连续。 这是我的数据中给出一个例子的第一点,x和y是坐标,freq应该是z轴。很抱歉没有放入整个数据,但轮廓有超过3000个点,然后我有大约250个样本,所以这是一个很长的数据集。

p <- ggplot(data = contour.xy, aes(x = x, y = y)) + 
  geom_path(data = contour.xy, aes(x = x, y = y)) + 
  geom_path(data = opticnerve.xy, aes(x = x, y = y)) + 
  geom_contour(data = counts, aes(x = "x", y = "y", z = "freq")) + 
  coord_equal()

我尝试放置图像,但我是新用户,因为反垃圾邮件规定我无法附加图片。

我将非常感谢任何帮助或建议

感谢所有人的圣诞快乐

2 个答案:

答案 0 :(得分:1)

最后,经过一些研究后发现了一个可以帮助我完成我想要的工作的包。这是由阿德里安·巴德利写的spatstat,他非常友好地帮助我完成了剧本的一部分。基本上它的作用是创建一个不规则形状的窗口,在这种情况下我的“岛”,然后我需要分析的所有点都落在窗口内。 为了创建窗口,我使用以下代码,使用x vector作为xp,y vector作为yp:         map&lt; - owin(poly = list(x = xp,y = yp))         图(图)

然后我可以创建所有点作为点模式(ppp)

非常感谢你的所有帮助,但特别感谢Adrian Baddeley的支持

答案 1 :(得分:0)

以下是volcano3d示例(提供可重现的问题;代码来自example(direct.labels)包中的directlabels

volcano3d <- melt(volcano)
colnames(volcano3d) <- c("x", "y", "z")

您可以绘制数据的等高线图,在本例中是Maunga Whau,如下所示:

(p <- ggplot(volcano3d, aes(x, y, z = z)) + 
  geom_contour()
)

您的示例代码也存在问题,因为aes需要表达式,而不是字符串。所以你应该有

aes(x = x, y = y, z = freq)

aes_string(x = "x", y = "y", z = "freq")

通常,您不需要为xy显式提供参数名称,因此事实上aes(x, y, z = freq)会这样做。