为什么我不能在 ggplot 中的点和误差线之间画一条线?

Why can't I put a line between point and errorbar in ggplot?

提问人:Antonio Manco 提问时间:8/28/2019 最后编辑:s__Antonio Manco 更新时间:8/28/2019 访问量:257

问:

我正在尝试使用 ggplot 函数添加简单的误差线,因为我在网络上找到了代码。geom_errobar()

Pic of the plot that I get

该函数有效,但我不知道为什么它没有在点和条之间划线。

在我在网上找到的代码解释的所有示例中,点和条之间总是有一条线,我使用了相同的代码!!

短数据集

structure(list(Daytime = structure(c(17683, 17684, 17685, 17686, 
17687, 17688, 17689, 17690, 17691, 17692, 17693, 17694, 17695, 
17696, 17697, 17698, 17699, 17700, 17701, 17702, 17703, 17704, 
17705, 17706, 17707, 17708, 17709, 17710, 17711, 17712), class = "Date"), 
    mz33_flux = c(0.0269902340425532, -0.0186273777777778, -0.0372041666666667, 
    -0.065895625, -0.0371895833333333, -0.0685152173913043, 0.0733608695652174, 
    -0.0462857446808511, 0.03306875, -0.0309327083333333, 0.0240914893617021, 
    0.0355631578947368, NA, NA, NA, NA, NA, NA, 1.32546206896552, 
    0.039425, -0.00267916666666666, -0.0299131111111111, -0.207063829787234, 
    0.0057391304347826, -0.0350862790697674, -0.0324617021276596, 
    -0.0234354838709677, -0.0835595744680851, 0.0966265957446808, 
    -0.0124054545454545), mz33_err = c(3.90466069268418e-05, 
    3.94858430704017e-05, 4.24302022766031e-05, 4.46591337717942e-05, 
    6.21204244886397e-05, 4.10959733730185e-05, 5.64638070309499e-05, 
    6.44166726780267e-05, 3.82000202086123e-05, 4.15227904947797e-05, 
    3.8179357878616e-05, 3.09029031996929e-05, NA, NA, NA, NA, 
    NA, NA, 0.00102801852277132, 3.86575696937507e-05, 2.93166992687375e-05, 
    3.24126251499621e-05, 5.68095205509716e-05, 7.24229986669278e-05, 
    5.91711611807517e-05, 7.34947840597977e-05, 6.30692813002305e-05, 
    5.4382594393826e-05, 9.84397824539971e-05, 3.30427039605518e-05
    )), row.names = c(NA, 30L), class = "data.frame")

ggplot 脚本

ggplot(df,aes(x=Daytime))+
  geom_line(aes(y=mz33_flux,colour="y"), size = 1)+
  geom_errorbar(aes(ymin=mz33_flux-mz33_err, ymax=mz33_flux+mz33_err), width=1,position=position_dodge(0.05),color="green")

我希望在点和误差线之间有连接线,正如我在函数的示例图中看到的那样。

r ggplot2 误差栏

评论

0赞 Marius 8/28/2019
什么是 和 ?是 DataFrame 中的列,还是单独的 DataFrame?dfdfydfy
0赞 Antonio Manco 8/28/2019
df=generic dataframe dfy= 我的 “y” 列 在 DataFrame 中,我报告了一个通用代码,以避免使用我的数据报告我的特定代码。

答:

1赞 s__ 8/28/2019 #1

我认为一切正常,但是您有一个非常小的错误,因此点和误差线之间没有连接;如果你把你的错误乘以 1000,你就会得到你要搜索的内容(显然数据是不同的):

ggplot(df,aes(x=Daytime,y=mz33_flux,colour="y"), size = 1)+
  geom_line()+
  geom_point() +
  geom_errorbar(aes(ymin=mz33_flux-mz33_err*1000, ymax=mz33_flux+mz33_err*1000), 
                width=1,
                position=position_dodge(0.05),
                color="green")

enter image description here

评论

0赞 Antonio Manco 8/28/2019
感谢您的回复。我没有提供数据,因为有点复杂,我认为代码中带有虚假通用数据引用的部分就足够了。无论如何,我知道 geomsmoot 和 geomribbon,但在这种情况下我更喜欢 errobars。为什么它们在我的情节中没有以正常的正确方式出现?在代码示例中显示的所有绘图中(我只是在我的绘图脚本中复制了这些绘图),它们显示为条形连接到点的白线!
0赞 Antonio Manco 8/28/2019
对不起,这是我第一次在 Stackoverflow 上发布问题,我不太理解。我可以直接从 R 导入数据的子集,还是必须创建与我的数据类似的假数据集?
0赞 s__ 8/28/2019
不用担心,我每次也在这里学习!你可以在 R 上发送这个命令:,你会得到一个这样的输出:如果你发布它编辑问题,你将共享你的数据的前 20 行,你的代码将工作,成为你的问题,具有最小的可重复示例。另外,你提到“......在代码示例中显示的所有情节中(我只是在我的情节脚本中复制了这些情节)......”但这里没有这些例子:您可以分享它们(链接等)来帮助我们发现问题。dput(head(insert here the name of the dataset,20))structure...
0赞 Antonio Manco 8/28/2019
谢谢。你很亲切,谢谢你的帮助。我已经按照你的建议做了,我希望以正确的方式。我已经用数据卫星的子集修改了我的帖子。
1赞 Antonio Manco 8/28/2019
还行。所以问题在于误差的大小和他的可视化!坏故事。无论如何,谢谢安东尼奥