在 R 中使用带有 ggplot 的 geom_line 时的锯齿形

Posted

技术标签:

【中文标题】在 R 中使用带有 ggplot 的 geom_line 时的锯齿形【英文标题】:Zig Zag when using geom_line with ggplot in R 【发布时间】:2021-08-30 15:46:00 【问题描述】:

我非常感谢在 R 中使用以下代码时对锯齿形的一些见解:

tbi_military %>% 
ggplot(aes(x = year, y = diagnosed, color = service)) +
geom_line() +
facet_wrap(vars(severity))

数据集由 5 个变量(3 个字符,2 个数字)组成。任何见解将不胜感激。

enter image description here

【问题讨论】:

请通过dput()提供您的数据样本 当您的组规范不完整时,通常会出现此模式。很可能,您的数据中有一个额外的分组变量,它每年将服务中的某些内容分开。你应该把它包含在aes(group = interaction(service, additional_grouping_variable)) 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

这只是一个标准数据集的插图。假设我们有兴趣根据饮食绘制小鸡的体重随时间的变化。我们会尝试这样绘制:

library(ggplot2)

ggplot(ChickWeight, aes(Time, weight, colour = factor(Diet))) +
  geom_line()

您可以看到锯齿形图案出现,因为每个饮食/时间点都有多个观察结果。因为geom_line 根据 x 轴对数据进行排序,所以这显示为一条垂直线,跨越当时每个饮食的数据点范围。

数据有一个名为“Chick”的附加变量,用于区分单个小鸡。包括在分组中解决了锯齿形图案,每一行都是每只小鸡随时间变化的重量。

ggplot(ChickWeight, aes(Time, weight, colour = factor(Diet))) +
  geom_line(aes(group = interaction(Chick, Diet)))

如果您没有额外的变量来区分各个趋势,您可以选择汇总每个时间点的数据,例如,通过取每个时间点的平均值。

ggplot(ChickWeight, aes(Time, weight, colour = factor(Diet))) +
  geom_line(stat = "summary", fun = mean)

由reprex package (v1.0.0) 于 2021-08-30 创建

【讨论】:

以上是关于在 R 中使用带有 ggplot 的 geom_line 时的锯齿形的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中使用带有 facet_wrap 的 ggplot2 显示多个轴标签

R语言使用ggplot2绘制带有边缘直方图的散点图实战

如何使用ggplot2格式化带有轴标签和旋转的R中的雷达图

R/ggplot2:添加带有透明度信息的 png

R:如何使用 ggplot2 创建一个半色半数的热图?

在R中为三种不同的后验分布添加带有ggplot的标签[重复]