【问题标题】:ggplot2 geom_contour in a discrete objectggplot2 geom_contour 在离散对象中
【发布时间】:2011-12-22 17:25:46
【问题描述】:

我正在尝试使用视网膜中密度细胞的不同密度点制作地形图。 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()

我试图放一张图片,但我是新用户,所以因为反垃圾邮件规定,我不能附上图片。

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

谢谢大家,圣诞快乐

【问题讨论】:

  • 向我们展示您的代码,到目前为止您已经获得了什么。
  • 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()
  • 这是我必须绘制图像的代码,在我尝试应用轮廓之前它工作正常

标签: r ggplot2 contour


【解决方案1】:

最后在做了一些研究之后发现了一个可以帮助我做我正在寻找的东西的包。它是由 Adrian Baddeley 编写的 spatstat,他非常友好地帮助我完成了部分脚本。基本上它所做的是创建一个形状不规则的窗口,在这种情况下是我的“岛”,然后我需要分析的所有点都落在窗口内。 为了创建窗口,我使用了以下代码,将 x 向量作为 xp,将 y 向量作为 yp: 地图

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

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

【讨论】:

    【解决方案2】:

    这是volcano3d 示例(提供可重现的问题;代码取自example(direct.labels) 包中的example(direct.labels))。

    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) 就可以了。

    【讨论】:

    • geom_path 变得有用的问题对我来说并不明显。让我知道这是否是您想要的。
    • 感谢aes的指正,有道理。即使这样,我也无法运行该命令。它告诉我: if (empty(new)) return(data.frame()) 中的错误:需要 TRUE/FALSE 的地方缺少值。
    • 路径对我来说很重要,因为它给了我岛屿的形状,除此之外我没有任何价值,这就是我需要限制轮廓函数的原因。火山的例子非常好,你可以玩很多东西,但地形图没有限制。假设我们想看到同一座火山,但在一个形状不规则的岛屿上,那么情节的许多部分都是空的。我希望这是有道理的,用图片可能更容易解释,但我不能在这里发布它们
    • 所以您只想绘制火山的一个子集,而该子集由您的岛屿的范围定义?
    • 当我尝试运行命令 geom_path 它告诉我: if (empty(new)) return(data.frame()) 中的错误:需要 TRUE/FALSE 的地方缺少值。不仅仅是火山的一个子集,就像没有整个地块的连续坐标集,我的坐标受到岛屿形状的限制。就像有一个大陆的真实地图,你想要大陆山脉的轮廓线,而不是像情节一样的正方形。
    猜你喜欢
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 2021-11-27
    • 1970-01-01
    • 2021-02-06
    • 2022-01-17
    相关资源
    最近更新 更多