gpt4 book ai didi

r - 如何在 ggplot2 的条形图上正确地将 geom_errorbar 设置为 "dodge"?

转载 作者:行者123 更新时间:2023-12-05 00:59:57 24 4
gpt4 key购买 nike

我正在尝试制作带有误差线的分组条形图。但是,我无法让误差条看起来正确(即比主条更细)和正确定位(在条的中心)。 position选项和 position_dodge()似乎无法正常工作,我无法弄清楚为什么 - 根据其他类似问题中的示例,这应该可以工作。

我在 R 版本 3.4.2 中运行 ggplot2 版本 3.0.0。

一个最小的工作示例:

d<-data.frame(bin = factor(c(1,2,3,1,2,3)),type = factor(c(1,1,1,2,2,2)), beta = c(10,20,30,40,50,60), se = c(2,2,2,2,2,2))
ggplot(d, aes(x=bin,y=beta,ymin = beta - 1.96* se, ymax = beta+1.96* se)) +
geom_bar(aes(fill = type), position = position_dodge2(), stat="identity") +
geom_errorbar(position=position_dodge2(.9))

生产:Right Position, Too Wide位置合适,但太宽了。使用 position_dodge()而不是 position_dodge2()甚至没有找到正确的位置:

ggplot(d, aes(x=bin,y=beta,ymin = beta - 1.96* se, ymax = beta+1.96* se)) + 
geom_bar(aes(fill = type), position = position_dodge(), stat="identity") +
geom_errorbar(position=position_dodge(.9))

Even wider, and wrong position添加 width geom_errorbar 的参数使用 position_dodge2() 打破版本并且对 position_dodge() 的人没有帮助:

ggplot(d, aes(x=bin,y=beta,ymin = beta - 1.96* se, ymax = beta+1.96* se)) + 
geom_bar(aes(fill = type), position = position_dodge2(), stat="identity") +
geom_errorbar(position=position_dodge2(.9), width= .2)

ggplot(d, aes(x=bin,y=beta,ymin = beta - 1.96* se, ymax = beta+1.96* se)) +
geom_bar(aes(fill = type), position = position_dodge(), stat="identity") +
geom_errorbar(position=position_dodge(.9), width = .2)

Good width, wrong position Good width, wrong position still

这里发生了什么?我该如何解决这个问题?

最佳答案

如果您将 fill 移动到全局 aes() 中,那么 position_dodge() 将按预期工作。或者,您可以通过 group 将分组变量添加到 geom_errorbar()

ggplot(d, aes(x = bin, y = beta, 
ymin = beta - 1.96*se, ymax = beta+1.96*se, fill = type)) +
geom_bar(position = position_dodge(), stat="identity") +
geom_errorbar(position=position_dodge(.9), width = .2)

position_dodge2() 的问题似乎是 this GitHub issue 中讨论的问题。 ,这可以通过 padding 参数解决。请注意,这种方法在 geom_errorbar() 中不再有 width 参数。

ggplot(d, aes(x = bin, y = beta, 
ymin = beta - 1.96*se, ymax = beta+1.96*se, fill = type)) +
geom_bar(position = position_dodge2(), stat="identity") +
geom_errorbar(position = position_dodge2(.9, padding = .6))

关于r - 如何在 ggplot2 的条形图上正确地将 geom_errorbar 设置为 "dodge"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51443889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com