【问题标题】:Draw line between points with groups in ggplot在ggplot中用组在点之间画线
【发布时间】:2019-11-05 10:48:26
【问题描述】:

我有一个时间序列,每个点都有一个时间、一个值和一个他所属的组。我正在尝试用 x 轴上的时间和 y 轴上的值来绘制它,根据组显示不同的颜色。

我尝试使用geom_path 和geom_line,但它们最终将点链接到组内的点。我发现当我对组使用连续变量时,我有一条法线;但是,当我使用因子或分类变量时,我遇到了链接问题。

这是我想要的一个可重现的示例:

df = data.frame(time = c(1,2,3,4,5,6,7,8,9,10), value = c(5,4,9,3,8,2,5,8,7,1), group = c(1,2,2,2,1,1,2,2,2,2))
ggplot(df, aes(time, value, color = group)) + geom_line()

这是我所拥有的一个可重现的示例:

df = data.frame(time = c(1,2,3,4,5,6,7,8,9,10), value = c(5,4,9,3,8,2,5,8,7,1), group = c("apple","pear","pear","pear","apple","apple","pear","pear","pear","pear"))
ggplot(df, aes(time, value, color = group)) + geom_line()

所以第一个示例运行良好,但是 1/ 它添加了几行来更改图例以具有我想要的标签,2/ 出于好奇,我想知道我是否遗漏了什么。

ggplot 中是否有任何选项可以用来实现我期望的行为,或者它是内部约束吗?

【问题讨论】:

  • 将group = 1 添加到aes 是否满足您的需求?
  • group = 1 到 aes 使其工作

标签: r ggplot2 time-series


【解决方案1】:

正如Richard Telford 和Carles Sans Fuentes 所指出的,在ggplot 美学中添加group = 1 就可以完成这项工作。所以正常的代码应该是:

ggplot(df, aes(time, value, color = group, group = 1)) + geom_line()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2023-03-05
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多