【问题标题】:Plot a point in a contour plot ggplot2在等高线图中绘制一个点 ggplot2
【发布时间】:2011-04-27 07:07:40
【问题描述】:

我在 ggplot2 中有一个等高线图,我想将一个点映射到。

我的等高线图是这样的:

v = ggplot(pts, aes(theta_1, theta_2, z = z))
v + stat_contour(aes(colour = ..level..),bins=50) 
+ xlab(expression(Theta[1])) + ylab(expression(Theta[2]))

我的观点是这样的:

p = ggplot(ts,aes(x,y))
p + geom_point() 

不幸的是,第二个覆盖了第一个。

有没有办法让它们出现在同一个图上,类似于 MATLAB 的“hold on;”?

谢谢!

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    不确定这是否仍然令人感兴趣,但我认为您只需要保存更新的 v 对象然后将点添加到该对象,而不是创建一个新的 ggplot2 对象。例如

    v <- ggplot(pts, aes(theta_1, theta_2, z = z))
    v <- v + stat_contour(aes(colour = ..level..),bins=50) 
    + xlab(expression(Theta[1])) + ylab(expression(Theta[2]))
    v <- v + geom_point(aes(x=ts$x, y=ts$y))
    v # to display
    

    ggplot2 非常擅长增量添加层,并非所有层都必须基于第一次 ggplot 调用中指定的相同数据集。

    【讨论】:

      【解决方案2】:

      您可以直接将积分提供给geom_point()

      set.seed(1000)
      x = rnorm(1000)
      g = ggplot(as.data.frame(x), aes(x = x))
      g + stat_bin() + geom_point(data = data.frame(x = -1, y = 40), aes(x=x,y=y))
      

      【讨论】:

      • 嗨,格雷格。谢谢,但不幸的是,这不适用于
        stat_contour()
        。我收到错误:
        Error in eval(expr, envir, enclos) : object 'z' not found
        基本上要求 Z 坐标。还有其他想法吗?谢谢!
      • 由于轮廓是 3 维的,因此您的点需要一个 z 分量,以便绘图包知道在哪里绘制它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      相关资源
      最近更新 更多