如何消除ggplot缺失数据导致的X轴年份间隔空白
解决X轴年份空白问题的方法
问题根源在于你把year当作连续数值变量处理了,ggplot会按数值的实际间距分配轴位置,缺失2019年就会自动留出对应空白。把year转成因子(离散)变量就能解决这个问题,具体操作如下:
步骤1:转换年份数据类型
先把数据框里的year列转为因子:
df1$year <- as.factor(df1$year)
步骤2:修改ggplot代码
去掉原来的scale_x_continuous,换成适配离散变量的设置(也可以让ggplot自动识别因子并显示现有年份),修改后的完整代码:
p1 <- ggplot(df1, aes(x = year, y = mean, fill = strata)) + geom_bar(position = "dodge", stat = "identity") + # 全局已指定y=mean,这里可省略重复设置 geom_errorbar(aes(ymin = mean - se, ymax = mean + se), width = 0.2, position = position_dodge(0.9)) + scale_x_discrete() # 如需自定义标签,可在这里补充设置
调整后绘图,2018和2020年的柱子会紧密排列,不会出现空白间隔。
内容的提问来源于stack exchange,提问作者Olivia
相关产品推荐
相关产品推荐

