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 deNU
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.
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