【问题标题】:Plotting both horizontal and vertical point ranges simultaneously in ggplot在ggplot中同时绘制水平和垂直点范围
【发布时间】:2021-02-22 15:10:57
【问题描述】:

有没有办法在ggplot 的同一个图上同时绘制水平 垂直点范围。我知道geom_pointrange(...) 绘制垂直点范围,水平点范围可以用coord_flip(...) 生成,但我有兴趣将两者放在同一个图上。

set.seed(1)
df <- data.frame(x=sample(1:10,10),y=sample(1:10,10), x.range=1, y.range=2)
library(ggplot2)
ggplot(df) +
  geom_pointrange(aes(x=x, y=y, ymin=y=y.range, ymax=y+y.range))

我正在寻找这样的东西:

ggplot(df) +
  geom_pointrange(aes(x=x, y=y, 
                      ymin=y-y.range, ymax=y+y.range, 
                      xmin=x-x.range, xmax=x+x.range))

这当然会产生与上面相同的输出,因为 xminxmax 参数被忽略了。显然,ggExtra 中有(曾经)一个函数 geom_hpointrange(...),但据我所知,这个包已经被拉出来了。

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    geom_errorbarh 你在找什么?

    ggplot(data = df, aes(x = x, y = y)) +  
      geom_pointrange(aes(ymin = y - y.range, ymax = y + y.range)) +
      geom_errorbarh(aes(xmax = x + x.range, xmin = x - x.range, height = 0))
    

    【讨论】:

    • 是的!这会做到的。看到您的解决方案后,我意识到还有另一种方法可以使用geom_errorbar(..)width=2*x.range,以及geom_errorbarh(...)height=2*y.range
    • height = 0 的绝妙技巧可以去除误差线。
    【解决方案2】:

    你也可以调用 geompoint_range 两次

    ggplot(df, aes(x=x, y=y)) +
      geom_pointrange(aes(ymin=y-y.range, ymax=y+y.range)) + 
      geom_pointrange(aes(xmin=x-x.range, xmax=x+x.range))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      • 2021-05-31
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多