在 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 时的锯齿形的主要内容,如果未能解决你的问题,请参考以下文章