R语言 向具有分类x轴的堆叠条形图添加线条

dy1byipe  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(218)

我试图添加一个geom_line到这个情节,但没有运气。

如果x轴不是分类类型(chr),这可能会起作用。我试了一下,没有效果:geom_line(aes(y=nettoforandring_mellan_ar_1_och_2, group=arsintervall))其中nettoforandring_mellan_ar_1_och_2是我的列。每个分类yr的堆叠条的netto,arsintervall是分类x轴。

-〉任何想法?

谢谢!

sy5wg1nm

sy5wg1nm1#

OP,请在将来添加一个可再现的示例(* 数据和完整的代码本身就可以生成一个示例图来展示你的问题 *)。然而,核心问题涉及在分类(离散)x轴上添加geom_line()

可复制示例

我可以使用mtcars重新创建相同类型的问题:

library(ggplot2)

p <-
  ggplot(mtcars, aes(x=factor(gear), y=wt)) +
  geom_col(aes(fill=factor(cyl)))

解决方案

由于分类(离散)轴没有“连接”,ggplot2默认情况下不会在x轴上的值之间绘制一条线。它将绘制的任何直线视为仅通过y值连接。因此,只有在执行以下操作时才能获得垂直线:

p + geom_line(linewidth=0.8)

要跨x轴值连接,您必须通过告诉ggplot2将所有点放入同一组来“强制”连接。通过Mapgroup=1group=来实现这一点。

p + geom_line(aes(group=1), linewidth=0.8)

虽然这里没有必要,但如果您只想用平均值之类的值绘制一条线(通常是在堆叠条形图上绘制一条线),您可以使用stat_summary(geom="line")并应用相同的逻辑。下面的代码生成一条线,它只连接y值点,这些点是每个x位置的平均值。

p + stat_summary(
    aes(group="big scary monster"),  # see how group can equal anything here?
    geom="line", linewidth=0.8)

相关问题