我很困惑,为什么如果我在position=position_dodge()
代码中保留 ,我的数字总值会全部改变?如果我删除它,总数是正确的,但为什么 dodge 会影响数值?
ggplot(data=check, aes(y=Abundance, x=Urban.Intensity)) +
geom_bar(stat="identity", position=position_dodge()) +
theme_bw() +
facet_wrap(~Genus, ncol=2) +
scale_y_continuous(limits=c(0,1500)) +
theme(text = element_text(size=14),
axis.title.x = element_text(size=14, color="black"),
axis.title.y = element_text(size=14, color="black"),
axis.text.x = element_text(size=14, color="black"),
axis.text.y = element_text(size=14, color="black"),
strip.text = element_text(face="italic", size=12, color="black")) +
ylab("Abundance") + xlab("Urbanization Intensity")
图position_dodge()
。Abundance
总值不正确,
图无position_dodge()
。Abundance
总值正确,
由于您未包含任何数据,我将使用 来显示一个示例
mtcars
。假设我们想要查看具有一定数量齿轮的所有汽车的总重量。这相当于您显示总 的目标Abundance
。geom_col()
/的默认位置geom_bar()
将与 堆叠观测值position_stack()
,从而给出总权重。如果我们在每个绘制的列上放置白色轮廓,这将更清晰。(a)我们可以应用
position_dodge
,但由于 ggplot2 假设每个观察结果都与其他观察结果属于同一“组”,因此躲避并不会将观察结果分开。相反,它们被过度绘制,如果我们使它们部分透明,就会看到。(b)如果我们将观测值分成不同的组,我们将看到更典型的躲避行为,我们可以看到与之前的图相同的最大高度。我们可以明确分配,或者如果我们有其他美学(如或等)映射到观测值或观测值组,
group
ggplot2 会为我们做到这一点。(c)color
fill
虽然可以在 ggplot2 geoms 中进行许多统计计算,但我经常发现使用 来“自己制作”统计信息更简单
dplyr
。例如,我可能会使用以下内容来显示每个齿轮的单个条形图和总标签: