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, as a string. |
position |
Position adjustment, either as a string, or the result of a call to a position adjustment function. |
... |
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).
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.