我在制作柱状图时遇到了问题,误差线只出现在分组变量的列角落,而不是居中显示。我使用的代码如下:
a <- data.frame (Cond = c("In", "In", "Out", "Out"),
Temp = c("Hot", "Cool", "Hot", "Cool"),
Score = c(.03, -.15, 0.84, 0.25),
SE = c(.02, .08, .14, .12))
a.bar <- ggplot (data = a, aes(x = Cond, y = Score, fill = Temp)) +
theme_bw() + theme(panel.grid = element_blank ()) +
coord_cartesian (ylim = c(-0.5, 1)) +
geom_bar (aes(fill = Temp), stat = "identity", position = "dodge", width = .5) +
geom_errorbar (aes(ymin = Score - SE, ymax = Score + SE, group = Cond), position = position_dodge(.9), width = .08) +
labs(y = "Scores" , x = "Cond") +
scale_y_continuous (breaks = pretty_breaks(n=8)) +
theme(legend.title = element_blank()) +
theme(legend.position = "right")
我尝试了其他的代码,但都无法正常工作。其中包括在 geom_bar() 中添加 "show.legend = FALSE";在 plot.a 中添加 "facet_wrap(~Cond)";以及在 ggplot(aes()) 中添加 "fill = Temp"。
最接近的解决方案是将 position_dodge() 参数改为:
geom_bar (aes(fill = Temp), stat = "identity", position = position_dodge(width = .5)) +
geom_errorbar (aes(ymin = Score - SE, ymax = Score + SE, group = Cond), position = position_dodge(.5), width = .08) +
(其余代码保持不变)。这将误差棒移向列的中心,但也使列相互靠近,最终导致它们重叠在一起(请参见附图)。
![请参见附图](https://istack.dev59.com/Qors5.webp)
我非常感谢您能提供帮助。
谢谢!
fill
应该是无关紧要的),但这是至关重要的,而且不是特别直观的。 - Devon