使用ggplot2将stat_summary mean line中的最大值指向

时间:2018-04-24 07:55:32

标签: r ggplot2

我有这种数据

                 Time      Value  Type
1 2018-04-23 00:00:00 0.00000000 FALSE
2 2018-04-23 00:10:00 0.08971613 FALSE
3 2018-04-23 00:20:00 0.02626635 FALSE
4 2018-04-23 00:30:00 0.40684988 FALSE
5 2018-04-23 00:40:00 0.29159049 FALSE
6 2018-04-23 00:50:00 0.54625109 FALSE

然后这段代码

graph <- ggplot(data, aes(x = Time, y = Value, colour = Type, group = Type)) +
  geom_point(size = 0.75, show.legend = FALSE) +
  stat_summary(fun.y = mean, geom = "line", size = 0.5, aes(colour = Type), show.legend = FALSE)

ggsave("test.png", width = 6.4, height = 4, dpi = 200, units = "in")

输出此图片。

enter image description here

但我无法通过summary_stat找到强调每个系列中最大值的方法。我怀疑fun.ymax是关键,但没有成功。

有人可以提出一个想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用stat_summary_bin并说服您只有一个垃圾箱。 geom_rug可以使用此功能。

ggplot(mtcars, aes(x = cyl, y = mpg)) + 
geom_point() + 
stat_summary_bin(fun.y  = max, geom = "rug", breaks = range(mtcars$cyl), colour = "red", sides = "l")

如果你想要一条直线,你需要geom_hlinestat_summary不能很好地匹配,所以你需要用

之类的代码预先计算最大值
ggplot(...) +
  geom_hline(aes(yintercept = max), data %>% group_by(Type) %>% summarise(max = max(Value))