求助:为带分类X轴的堆叠柱状图添加geom_line失败
解决思路
- 核心问题:你用
group=arsintervall完全错了——每个arsintervall是单独的分类,每个分类下只有一个净值数据点,分组后每个组只有一个点,根本画不出线条。 - 修正方案:
- 把
geom_line的group参数设为固定常数(比如group=1),强制ggplot将所有X轴分类的净值点视为同一组,这样就能连线。 - 调整图层顺序:把
geom_line放在geom_col(或geom_bar)之后,避免被堆叠柱子挡住,建议搭配geom_point让数据点更清晰。 - 可选优化:如果
arsintervall是年份区间(比如"2018-2019"),把它转成有序因子,确保X轴按时间顺序排列,线条连接逻辑才正确。
- 把
示例代码
# 基础堆叠柱状图 + 净值线条 ggplot(your_data, aes(x = arsintervall)) + # 堆叠柱状图部分(fill对应你的分组变量) geom_col(aes(y = your_stack_value, fill = your_category), position = "stack") + # 净值线条:group=1是关键,指定y为净值列 geom_line(aes(y = nettoforandring_mellan_ar_1_och_2, group = 1), color = "#2c3e50", size = 1.2) + # 搭配数据点,更直观 geom_point(aes(y = nettoforandring_mellan_ar_1_och_2), color = "#e74c3c", size = 2.5) + # 可选:设置X轴顺序(替换成你的实际年份区间) scale_x_discrete(limits = c("2017-2018", "2018-2019", "2019-2020", "2020-2021"))
额外说明
如果你的nettoforandring_mellan_ar_1_och_2列有重复值或者每个arsintervall对应多个值,需要先做聚合,确保每个分类X轴对应唯一的净值数值(比如用dplyr::group_by(arsintervall) %>% summarise(nettoforandring_mellan_ar_1_och_2 = sum(xxx)))。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

