stat_peaks finds at which x positions of local y maxima are located and
stat_valleys finds at which x positions local y minima are located.
Both stats return x and y numeric values for the peaks and formatted
character labels. The formatting is determined by a format string suitable
for sprintf().
stat_peaks(mapping = NULL, data = NULL, geom = "point", span = 5, ignore_threshold = 0, strict = FALSE, label.fmt = "%.4g", x.label.fmt = NULL, y.label.fmt = label.fmt, position = "identity", na.rm = FALSE, show.legend = FALSE, inherit.aes = TRUE, ...)
stat_valleys(mapping = NULL, data = NULL, geom = "point", span = 5, ignore_threshold = 0, strict = FALSE, label.fmt = "%.4g", x.label.fmt = NULL, y.label.fmt = label.fmt, position = "identity", na.rm = FALSE, show.legend = FALSE, inherit.aes = TRUE, ...)aes or aes_string. Only needs
to be set
at the layer level if you are overriding the plot defaults.NULL value for span
is taken as a span covering the whole of the data range.sprintf.sprintf.NA, the default, includes if any aesthetics are mapped.
FALSE never includes, and TRUE always includes.FALSE, overrides the default aesthetics,
rather than combining with them. This is most useful for helper functions
that define both data and aesthetics and shouldn't inherit behaviour from
the default plot specification, e.g. borders.geom_point by default as it is the geom most
likely to work well in almost any situation without need of tweaking. The
default aesthetics set by these stats allow their direct use with
geom_text, geom_label, geom_line, geom_rug,
geom_hline and geom_vline. The formatting of the labels
returned can be controlled by the user.
find_peaks
library(ggplot2)
lynx.df <- data.frame(year = as.numeric(time(lynx)), lynx = as.matrix(lynx))
ggplot(lynx.df, aes(year, lynx)) + geom_line() +
stat_peaks(colour = "red") +
stat_valleys(colour = "blue")
ggplot(lynx.df, aes(year, lynx)) + geom_line() +
stat_peaks(colour = "red") +
stat_peaks(colour = "red", geom = "rug")
Run the code above in your browser using DataLab