| geom_peak | R Documentation | 
This function draws points on the x-y coordinates of selected peaks and write their (y) value on the bottom of the plot.
geom_peak( mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., na.rm = TRUE, show.legend = NA, inherit.aes = TRUE, peak_rank = 1, conversion = hours )
| mapping | Set of aesthetic mappings created by  | 
| data | The data to be displayed in this layer. There are three options: If  A  A  | 
| stat | The statistical transformation to use on the data for this
layer, either as a  | 
| position | Position adjustment, either as a string naming the adjustment
(e.g.  | 
| ... | Other arguments passed on to  | 
| na.rm | If  | 
| show.legend | logical. Should this layer be included in the legends?
 | 
| inherit.aes | If  | 
| peak_rank | numerical vector specifying the rank(s) of peak(s) to draw | 
| conversion | function to convert values of  | 
In the input data, peaks are encoded as an additional column/aesthetic with values
corresponding to peak ranks (and 0 when the point is not a peak).
In other word, the mapping must provide x, y and peak.
Only peaks matching peak_rank will be drawn (see example).
A ggplot layer.
The relevant rethomic tutorial section
ggperio to create a periodogram
zeitgebr::find_peaks to automatically add a peak column on periodogram data
Other layers: 
stat_bar_tile_etho(),
stat_ld_annotations(),
stat_pop_etho()
# We make a data frame by hand with five rows
# There are two peaks: in position 4 and 2
df <- data.frame(x = hours(1:5),
                 y = c(1, 2, 0, 4, 1),
                 peak = c(0, 2, 0, 1, 0))
#  We draw the plot as a line
pl <-  ggplot(df, aes(x, y, peak = peak)) +
                  geom_line() +
                  scale_x_hours()
pl
# Now we could add the peak values as an extra layer:
# The first peak
pl + geom_peak()
# The first ans second peak
pl + geom_peak(peak_rank = 1:2)
# The second only
pl + geom_peak(peak_rank = 2)
# Just like with other geoms,
# we can change colour, size, alpha, shape, ... :
pl + geom_peak(colour = "red", size = 10, alpha = .5, shape = 20)
## In the context of circadian analysis,
# Using the zeitgebr package:
require(zeitgebr)
# We make toy data
metadata <- data.table(id = sprintf("toy_experiment|%02d", 1:40),
                       region_id = 1:40,
                       condition = c("A", "B"),
                       sex = c("M", "M", "F", "F"))
dt <- toy_activity_data(metadata, seed = 107)
# We shift period of the group "A" by 0.01
dt[, t := ifelse(xmv(condition) == "A", t, t * 1.01)]
# We  compute a periodogram for each individual
per_dt <- periodogram(moving, dt, FUN = chi_sq_periodogram)
per_dt <- find_peaks(per_dt)
out <- ggperio(per_dt, aes(y = power - signif_threshold, colour = condition, peak = peak)) +
                    stat_pop_etho() +
                    facet_wrap( ~ id, labeller = id_labeller)
out
out + geom_peak(colour="black")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.