【问题标题】:Scatter plots, groups and error bars in ggplot2ggplot2 中的散点图、组和误差线
【发布时间】:2016-05-11 22:34:51
【问题描述】:

我正在努力解决以下问题,非常感谢您的帮助。

我有以下数据(这只是一个简单的随机示例)

x<- c('left', 'left', 'left', 'right', 'right', 'right')
y<- c (0.5, 0.3, 0.2, 0.5, 0.7, 0.2)
conf<- c(1.5, 1.7, 3, 2, 3, 1)
df <-data.frame(x,y,conf)

我想做下面的情节。

library(ggplot2)
ggplot(df, aes(x=x, y=y))+geom_point()+coord_flip()

这会生成以下图像see photo here。但是我的每个点 (y) 也有一定的相关置信度(变量 conf),我想将其绘制为另一个 x 轴上的置信度值(在这种情况下将位于右侧,置信度值将是垂直线)。如何在图的右侧添加第二个 x 轴,以便它是数字的并将我的值绘制为置信区间?

非常感谢您的帮助。

【问题讨论】:

  • 当您可以映射aes(x = y, y = x) 时,您为什么还要为coord_flip 烦恼?您的命名约定似乎引入了额外的混乱。需要明确的是,不确定性不在名称y(水平)维度,而是在x(垂直)维度?
  • 有两个 y 轴是 deliberately difficult in ggplot。但是,您可以轻松地facet_wrap(~ x, ncol = 1)、映射y = 0 并使用标准geom_errorbar 来表示不确定性。
  • 我尝试从我更复杂的数据中制作一个简单的示例,以便能够在此处显示它并使用错误的混淆名称。通过试图简化它,我实际上让它变得更复杂了。 @Gregor 感谢 facet_wrap 也可以工作。

标签: r ggplot2 scatter-plot errorbar


【解决方案1】:

使用geom_errorbarh() 你可以这样做:

library(ggplot2)
ggplot(df, aes(x=x, y=y))+geom_point()+coord_flip()+ 
    geom_errorbarh(aes( xmax = as.numeric(x)+conf/10, 
                       xmin = as.numeric(x)-conf/10, 
                       height=0))

但正如其他帖子中所说,在您的 x 轴上具有多个含义可能不是很好,因此您可以facet:

ggplot(df, aes(x=0, y=y))+geom_point()+ 
     geom_errorbarh(aes( xmax = conf, xmin = -conf, height=0))+
     coord_flip()+facet_wrap(~dir, nrow=2)

【讨论】:

    【解决方案2】:

    环顾四周,几个线程表明 ggplot 旨在不支持您正在寻找的内容,这通常是不好的做法(请参阅this comment 和 this thread)。

    似乎有一个“黑客”here,它可能比你想要的更进一步。

    附带说明:请问您为什么决定将 y 轴标记为“x”而将 x 轴标记为“y”?

    【讨论】:

    • x 是 x,y 是 y,我只是使用了 cord_flip。 (用我的实际数据我翻转了情节,因为它更适合表示,但用这个发明的数据做这件事毫无意义且令人困惑)。
    猜你喜欢
    • 2012-10-13
    • 2021-11-11
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多