R ggplot:将线轮廓添加到散点图

R ggplot:将线轮廓添加到散点图,r,ggplot2,scatter-plot,R,Ggplot2,Scatter Plot,我有数千个数据点,跨越几天内的10分钟时间戳。 绘制散点图会创建一个重复的模式,我想强调一下。 在上面的图片中,我想画一条线,勾勒出这个分散的形状。更具体地说,一条线穿过每小时刻度的最大值。 我曾尝试添加freqpoly和hist等,但它们不适合这种绘图类型,其中x是时间戳。我也尝试过计算每个时间戳的最大值,但我不能在同一个pot中使用它,因为原始数据是高格式的,每个时间戳有多个条目 示例数据: set.999 df您可以通过将geom_点的美学移到实际参数中来实现这一点。然后,您可以添加一个s

我有数千个数据点,跨越几天内的10分钟时间戳。 绘制散点图会创建一个重复的模式,我想强调一下。 在上面的图片中,我想画一条线,勾勒出这个分散的形状。更具体地说,一条线穿过每小时刻度的最大值。 我曾尝试添加freqpoly和hist等,但它们不适合这种绘图类型,其中x是时间戳。我也尝试过计算每个时间戳的最大值,但我不能在同一个pot中使用它,因为原始数据是高格式的,每个时间戳有多个条目

示例数据:

set.999
df您可以通过将geom_点的美学移到实际参数中来实现这一点。然后,您可以添加一个stat_摘要来添加行,如下所示:

set.seed(999)
library(ggplot2)

df <- data.frame('hour' = rep(seq(ISOdatetime(2019,12,1,0,0,0), by = '10 mins', length.out = 6), 3),
                 'value' = rnorm(18),
                 'category' = rep(c('a', 'b', 'c'), 6))

# Valid for ggplot2 version 3.2.1.9000
# fun.y might be needed if running an earlier version
ggplot(df) +
  geom_point(aes(x = hour, y = value, color = category), cex = 7) +
  theme_minimal()+
  stat_summary(geom = "line", fun = max, aes(hour, value))

# Or you can simplify a little and just keep the color aesthetic in the geom_point
# Same result achieved

ggplot(df, aes(x = hour, y = value),) +
  geom_point( aes(color = category), cex = 7) +
  stat_summary(geom = "line", fun = max)+
  theme_minimal()
这允许您添加线,然后添加摘要统计信息作为新的线几何图形


可以通过将几何点的美学移到实际参数中来实现这一点。然后,您可以添加一个stat_摘要来添加行,如下所示:

set.seed(999)
library(ggplot2)

df <- data.frame('hour' = rep(seq(ISOdatetime(2019,12,1,0,0,0), by = '10 mins', length.out = 6), 3),
                 'value' = rnorm(18),
                 'category' = rep(c('a', 'b', 'c'), 6))

# Valid for ggplot2 version 3.2.1.9000
# fun.y might be needed if running an earlier version
ggplot(df) +
  geom_point(aes(x = hour, y = value, color = category), cex = 7) +
  theme_minimal()+
  stat_summary(geom = "line", fun = max, aes(hour, value))

# Or you can simplify a little and just keep the color aesthetic in the geom_point
# Same result achieved

ggplot(df, aes(x = hour, y = value),) +
  geom_point( aes(color = category), cex = 7) +
  stat_summary(geom = "line", fun = max)+
  theme_minimal()
这允许您添加线,然后添加摘要统计信息作为新的线几何图形


首先将数据子集为每小时最大值,并在geom中使用_line@PoGibas我试过了,但最大值向量的条目数和小时数一样多,但没有引起错误的观测值那么多:美学必须是长度1或与数据38215:x相同,y.首先将每小时最大值的数据子集,并在geom中使用_line@PoGibas我试过了,但是最大值向量的条目数和小时数一样多,但没有引起错误的观察数那么多:美学必须是长度1或与数据38215:x,y相同。正确的论点是有趣的。y=,经过反复试验才发现。还是谢谢你,这太完美了@RonnyFronny对fun.y要小心,因为它被弃用了,这意味着它最终会消失,尽管我同意它比一般的乐趣更直观。很高兴为您提供帮助我的意思是,使用有趣的抛出和错误是不可识别的,也没有出现在stat_summary的文档中。啊,很好的呼叫,是的,我在ggplot2 3.2.1.9000上,所以可能是这样it@RonnyEfronny更新的解决方案包含了关于fun vs fun.y的注释。正确的参数是fun.y=,经过反复试验才发现。还是谢谢你,这太完美了@RonnyFronny对fun.y要小心,因为它被弃用了,这意味着它最终会消失,尽管我同意它比一般的乐趣更直观。很高兴为您提供帮助我的意思是,使用有趣的抛出和错误是不可识别的,也没有出现在stat_summary的文档中。啊,很好的呼叫,是的,我在ggplot2 3.2.1.9000上,所以可能是这样it@RonnyEfronny更新的解决方案,包括关于fun vs fun.y的说明