一个非常常见的问题是当 ggplot 中缺少列时保留条形的宽度(例如1 https://stackoverflow.com/questions/11020437/consistent-width-for-geom-bar-in-the-event-of-missing-data, 2 https://www.aj2duncan.com/blog/missing-data-ggplot2-barplots/。除了此修复之外,我还需要保留缺失条形的相对位置(即间隙应该位于条形本来所在的位置)。
ggplot(mtcars, aes(factor(cyl), fill = factor(gear))) +
geom_bar(position = position_dodge(preserve = "single"))
您会注意到,在 8 个气缸组(最右侧)中缺少绿色列(齿轮 = 4)。preserve="single"
已修正宽度,但蓝色条(齿轮=5)已向左移动以填充空白。
我怎样才能防止这种情况发生?我希望绿色的地方有一个间隙。
感谢您的任何帮助。
我们得到频率count
基于 'cyl', 'gear', 扩展数据complete
得到所有的组合fill
将计数列 'n' 设为 0(默认情况下,所有列中未提及的列)complete
在缺少组合的地方得到 NA),然后用ggplot
library(dplyr)
library(tidyr)
library(ggplot2)
mtcars %>%
count(cyl, gear) %>%
complete(cyl = unique(cyl), gear = unique(gear),
fill = list(n = 0)) %>%
ggplot(aes(factor(cyl), n, fill = factor(gear))) +
geom_bar(stat = 'identity', position = 'dodge')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)