1#' @include stat-.r 2NULL 3 4#' @export 5#' @rdname geom_abline 6geom_hline <- function(mapping = NULL, data = NULL, 7 ..., 8 yintercept, 9 na.rm = FALSE, 10 show.legend = NA) { 11 12 # Act like an annotation 13 if (!missing(yintercept)) { 14 # Warn if supplied mapping and/or data is going to be overwritten 15 if (!is.null(mapping)) { 16 warn_overwritten_args("geom_hline()", "mapping", "yintercept") 17 } 18 if (!is.null(data)) { 19 warn_overwritten_args("geom_hline()", "data", "yintercept") 20 } 21 22 data <- new_data_frame(list(yintercept = yintercept)) 23 mapping <- aes(yintercept = yintercept) 24 show.legend <- FALSE 25 } 26 27 layer( 28 data = data, 29 mapping = mapping, 30 stat = StatIdentity, 31 geom = GeomHline, 32 position = PositionIdentity, 33 show.legend = show.legend, 34 inherit.aes = FALSE, 35 params = list( 36 na.rm = na.rm, 37 ... 38 ) 39 ) 40} 41 42#' @rdname ggplot2-ggproto 43#' @format NULL 44#' @usage NULL 45#' @export 46GeomHline <- ggproto("GeomHline", Geom, 47 draw_panel = function(data, panel_params, coord) { 48 ranges <- coord$backtransform_range(panel_params) 49 50 data$x <- ranges$x[1] 51 data$xend <- ranges$x[2] 52 data$y <- data$yintercept 53 data$yend <- data$yintercept 54 55 GeomSegment$draw_panel(unique(data), panel_params, coord) 56 }, 57 58 default_aes = aes(colour = "black", size = 0.5, linetype = 1, alpha = NA), 59 required_aes = "yintercept", 60 61 draw_key = draw_key_path 62) 63