如何在 ggplot2 中的 position_dodge 中将单个条形位置与多个条形居中
Posted
技术标签:
【中文标题】如何在 ggplot2 中的 position_dodge 中将单个条形位置与多个条形居中【英文标题】:How to centre single bar position with multiple bars in position_dodge in ggplot2 【发布时间】:2022-01-01 12:55:36 【问题描述】:我有以下 geom_bar 闪避图,并认为 8、17、26 和 27 岁的单条看起来集中而不是偏左更好。我不确定要在脚本中添加什么来实现这一点。任何帮助将不胜感激。
这是脚本:
ggplot(data = combo1, aes(x = Age_Year, fill = Tactic)) +
geom_bar(position = position_dodge(preserve = 'single')) +
theme_classic() +
labs(x = "Age (years)", y = "Counts of Fish", show.legend = FALSE)+
theme(legend.position = "none")+
scale_fill_manual("legend", values = c("Migr" = "skyblue", "OcRes" = "pale green", "EstRes" = "pink"))
【问题讨论】:
请使问题可重现;将dput(combo1)
的输出添加到问题中;见minimal reproducible example。
【参考方案1】:
OP,使用position_dodge2(preserve="single")
代替position_dodge(preserve="single")
。出于某种原因,居中的条形/列在position_dodge()
上不能完全正常工作,但在position_dodge2()
上却可以。请注意切换位置功能时的间距略有不同,但总体上应该可以解决您的问题。
OP 问题的可重现示例
library(ggplot2)
set.seed(8675309)
df <- data.frame(
x=c("A", "A", "A", "B", "C", "C"),
grouping_var = c("Left", "Middle", "Right", "Middle", "Left", "Right"),
values = sample(1:100, 6))
position_dodge()
的基本情节:
ggplot(df, aes(x=x, y=values, fill=grouping_var)) +
geom_col(position=position_dodge(preserve = "single")) +
theme_classic()
当你使用position_dodge2()
:
ggplot(df, aes(x=x, y=values, fill=grouping_var)) +
geom_col(position=position_dodge2(preserve = "single")) +
theme_classic()
【讨论】:
以上是关于如何在 ggplot2 中的 position_dodge 中将单个条形位置与多个条形居中的主要内容,如果未能解决你的问题,请参考以下文章