From 2b366a1c3cebb4e2ff7008be26c48291f7b73d66 Mon Sep 17 00:00:00 2001 From: xiangpin Date: Fri, 20 Jun 2025 18:10:24 +0800 Subject: [PATCH 1/4] consistency with upcoming ggplot2 version --- R/geom_hilight.R | 4 +-- R/method-ggplot-add.R | 64 +++++++++++++++++++++---------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/R/geom_hilight.R b/R/geom_hilight.R index efe666bd..6e38dde4 100644 --- a/R/geom_hilight.R +++ b/R/geom_hilight.R @@ -306,7 +306,7 @@ geom_hilight_encircle2 <- function(data=NULL, ) } -check_linewidth <- getFromNamespace('check_linewidth', 'ggplot2') +fix_linewidth <- getFromNamespace('fix_linewidth', 'ggplot2') snake_class <- getFromNamespace('snake_class', 'ggplot2') snakeize <- getFromNamespace('snakeize', 'ggplot2') @@ -318,7 +318,7 @@ GeomHilightEncircle <- ggproto("GeomHilightEncircle", Geom, draw_key = draw_key_polygon, rename_size = TRUE, draw_panel = function(self, data, panel_scales, coord){ - data <- check_linewidth(data, snake_class(self)) + data <- fix_linewidth(data, snake_class(self)) globs <- lapply(split(data, data$clade_root_node), function(i) get_glob_encircle(i, panel_scales, coord)) ggname("geom_hilight_encircle2", do.call("grobTree", globs)) diff --git a/R/method-ggplot-add.R b/R/method-ggplot-add.R index d92d8f5d..b3d76a40 100644 --- a/R/method-ggplot-add.R +++ b/R/method-ggplot-add.R @@ -2,7 +2,7 @@ ##' @importFrom ggplot2 ggplot_add ##' @method ggplot_add facet_xlim ##' @export -ggplot_add.facet_xlim <- function(object, plot, object_name) { +ggplot_add.facet_xlim <- function(object, plot, object_name, ...) { var <- panel_col_var(plot) free_x <- plot$facet$params$free$x if (!is.null(free_x)) { @@ -17,12 +17,12 @@ ggplot_add.facet_xlim <- function(object, plot, object_name) { } obj <- geom_blank(aes_(x = ~x), dummy, inherit.aes = FALSE) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @method ggplot_add zoom_clade ##' @export -ggplot_add.zoom_clade <- function(object, plot, object_name) { +ggplot_add.zoom_clade <- function(object, plot, object_name, ...) { zoomClade(plot, object$node, xexpand=object$xexpand) } @@ -83,17 +83,17 @@ ggplot_add.zoom_clade <- function(object, plot, object_name) { ##' @method ggplot_add geom_range ##' @export -ggplot_add.geom_range <- function(object, plot, object_name) { +ggplot_add.geom_range <- function(object, plot, object_name, ...) { obj <- do.call(geom_range_internal, object) assign(x = "range_range", value = object$range, envir = plot$plot_env) assign(x = "range_center", value = object$center, envir = plot$plot_env) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @method ggplot_add layout_ggtree ##' @importFrom ggplot2 expansion ##' @export -ggplot_add.layout_ggtree <- function(object, plot, object_name) { +ggplot_add.layout_ggtree <- function(object, plot, object_name, ...) { if(object$layout == 'fan') { return(open_tree(plot, object$angle)) } @@ -115,7 +115,7 @@ ggplot_add.layout_ggtree <- function(object, plot, object_name) { } else { ## rectangular obj <- coord_cartesian(clip = 'off') } - plot <- ggplot_add(obj, plot, object_name) + plot <- ggplot_add(obj, plot, object_name, ...) plot$plot_env <- build_new_plot_env(plot$plot_env) assign("layout", object$layout, envir = plot$plot_env) return(plot) @@ -125,7 +125,7 @@ ggplot_add.layout_ggtree <- function(object, plot, object_name) { ##' @method ggplot_add range_xaxis ##' @export -ggplot_add.range_xaxis <- function(object, plot, object_name) { +ggplot_add.range_xaxis <- function(object, plot, object_name, ...) { d <- plot$data center <- get("range_center", envir = plot$plot_env) if (center == "auto") { @@ -140,12 +140,12 @@ ggplot_add.range_xaxis <- function(object, plot, object_name) { diff <- cc - d$x[i] obj <- scale_x_continuous(sec.axis = ~. + diff) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @method ggplot_add ggexpand ##' @export -ggplot_add.ggexpand <- function(object, plot, object_name) { +ggplot_add.ggexpand <- function(object, plot, object_name, ...) { side <- object$side obj <- NULL if (side == 'h' || side == 'hv') { @@ -157,7 +157,7 @@ ggplot_add.ggexpand <- function(object, plot, object_name) { lim <- ggexpand_internal(plot, object$ratio, object$direction, 'y') obj <- list(obj, ggplot2::expand_limits(y = lim)) } - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ggexpand_internal <- function(plot, ratio, direction, var) { @@ -178,25 +178,25 @@ ggexpand_internal <- function(plot, ratio, direction, var) { ##' @method ggplot_add tree_inset ##' @export -ggplot_add.tree_inset <- function(object, plot, object_name) { +ggplot_add.tree_inset <- function(object, plot, object_name, ...) { object$tree_view <- plot do.call(inset, object) } ##' @method ggplot_add facet_plot ##' @export -ggplot_add.facet_plot <- function(object, plot, object_name) { +ggplot_add.facet_plot <- function(object, plot, object_name, ...) { plot <- add_panel(plot, object$panel) df <- plot %+>% object$data params <- c(list(data = df, mapping = object$mapping), object$params) obj <- do.call(object$geom, params) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @method ggplot_add tiplab ##' @export -ggplot_add.tiplab <- function(object, plot, object_name) { +ggplot_add.tiplab <- function(object, plot, object_name, ...) { layout <- get_layout(plot) if (layout == 'dendrogram'){ if( object$hjust == 0 ){ @@ -227,7 +227,7 @@ ggplot_add.tiplab <- function(object, plot, object_name) { #object$geom <- NULL object$offset <- NULL object$nodelab <- NULL - res <- ggplot_add.tiplab_ylab(object, plot, object_name) + res <- ggplot_add.tiplab_ylab(object, plot, object_name, ...) return(res) } @@ -239,12 +239,12 @@ ggplot_add.tiplab <- function(object, plot, object_name) { #object$nodelab <- NULL ly <- do.call(geom_tiplab_rectangular, object) } - ggplot_add(ly, plot, object_name) + ggplot_add(ly, plot, object_name, ...) } ##' @method ggplot_add tiplab_ylab ##' @export -ggplot_add.tiplab_ylab <- function(object, plot, object_name) { +ggplot_add.tiplab_ylab <- function(object, plot, object_name, ...) { layout <- get_layout(plot) if (is.null(object$position)) { if (layout == "rectangular") { @@ -295,7 +295,7 @@ ggplot_add.tiplab_ylab <- function(object, plot, object_name) { ##' @method ggplot_add cladelabel ##' @export -ggplot_add.cladelabel <- function(object, plot, object_name) { +ggplot_add.cladelabel <- function(object, plot, object_name, ...) { #layout <- get("layout", envir = plot$plot_env) layout <- get_layout(plot) if (layout == "unrooted" || layout == "daylight") { @@ -303,12 +303,12 @@ ggplot_add.cladelabel <- function(object, plot, object_name) { } else { ly <- do.call(geom_cladelabel_rectangular, object) } - ggplot_add(ly, plot, object_name) + ggplot_add(ly, plot, object_name, ...) } ##' @method ggplot_add cladelab ##' @export -ggplot_add.cladelab <- function(object, plot, object_name){ +ggplot_add.cladelab <- function(object, plot, object_name, ...){ #layout <- get("layout", envir=plot$plot_env) layout <- get_layout(plot) if (is.null(object$mapping) && (is.null(object$node) || is.null(object$label))){ @@ -433,7 +433,7 @@ ggplot_add.cladelab <- function(object, plot, object_name){ bar_obj <- do.call("geom_segment", bar_obj) } obj <- list(annot_obj, bar_obj) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ## ##' @method ggplot_add hilight @@ -461,7 +461,7 @@ ggplot_add.cladelab <- function(object, plot, object_name){ ##' @method ggplot_add hilight ##' @importFrom rlang quo_name ##' @export -ggplot_add.hilight <- function(object, plot, object_name){ +ggplot_add.hilight <- function(object, plot, object_name, ...){ #layout <- get("layout", envir = plot$plot_env) layout <- get_layout(plot) if (!is.character(layout)) layout <- "rectangular" @@ -572,7 +572,7 @@ ggplot_add.hilight <- function(object, plot, object_name){ roundrect = choose_hilight_layer(object = object, type = "roundrect") ) } - plot <- ggplot_add(ly, plot, object_name) + plot <- ggplot_add(ly, plot, object_name, ...) if (object$to.bottom){ idx <- length(plot$layers) plot$layers <- c(plot$layers[idx], plot$layers[-idx]) @@ -583,7 +583,7 @@ ggplot_add.hilight <- function(object, plot, object_name){ ##' @method ggplot_add striplabel ##' @export -ggplot_add.striplabel <- function(object, plot, object_name) { +ggplot_add.striplabel <- function(object, plot, object_name, ...) { d <- plot$data strip_df <- get_striplabel_position(d, object$taxa1, object$taxa2, object$offset, object$align, @@ -620,12 +620,12 @@ ggplot_add.striplabel <- function(object, plot, object_name) { ) } - ggplot_add(list(ly_bar, ly_text), plot, object_name) + ggplot_add(list(ly_bar, ly_text), plot, object_name, ...) } ##' @method ggplot_add striplab ##' @export -ggplot_add.striplab <- function(object, plot, object_name){ +ggplot_add.striplab <- function(object, plot, object_name, ...){ layout <- get_layout(plot) if (is.null(object$data) && is.null(object$taxa1) && is.null(object$taxa2) && is.null(object$label)){ abort("data and taxa1, taxa2, label can't be NULL simultaneously!") @@ -739,14 +739,14 @@ ggplot_add.striplab <- function(object, plot, object_name){ bar_obj <- do.call("geom_segment", bar_obj) #} obj <- list(annot_obj, bar_obj) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @importFrom ggplot2 scale_x_continuous ##' @importFrom ggplot2 scale_x_date ##' @method ggplot_add scale_ggtree ##' @export -ggplot_add.scale_ggtree <- function(object, plot, object_name) { +ggplot_add.scale_ggtree <- function(object, plot, object_name, ...) { mrsd <- get("mrsd", envir = plot$plot_env) if (!is.null(mrsd) && inherits(plot$data$x, "Date")) { x <- Date2decimal(plot$data$x) @@ -789,13 +789,13 @@ ggplot_add.scale_ggtree <- function(object, plot, object_name) { } else { obj <- scale_x_continuous(breaks=breaks, labels=labels) } - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @importFrom ggplot2 aes_ ##' @importFrom rlang abort as_name ##' @export -ggplot_add.taxalink <- function(object, plot, object_name){ +ggplot_add.taxalink <- function(object, plot, object_name, ...){ #layout <- get("layout", envir = plot$plot_env) layout <- get_layout(plot) if (object$outward=="auto"){ @@ -848,5 +848,5 @@ ggplot_add.taxalink <- function(object, plot, object_name){ } params <- c(list(data=object$data, mapping=object$mapping, outward=object$outward), object$params) obj <- do.call("geom_curvelink", params) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } From 1adac1dd1124fff7fd70a8f585629c8c517dbf2c Mon Sep 17 00:00:00 2001 From: xiangpin Date: Fri, 20 Jun 2025 19:47:34 +0800 Subject: [PATCH 2/4] consistency with upcoming ggplot2 version --- R/geom_hilight.R | 11 +++++++- R/method-ggplot-add.R | 64 +++++++++++++++++++++---------------------- 2 files changed, 42 insertions(+), 33 deletions(-) diff --git a/R/geom_hilight.R b/R/geom_hilight.R index efe666bd..818e3fe4 100644 --- a/R/geom_hilight.R +++ b/R/geom_hilight.R @@ -306,7 +306,16 @@ geom_hilight_encircle2 <- function(data=NULL, ) } -check_linewidth <- getFromNamespace('check_linewidth', 'ggplot2') +check_linewidth <- function(data, name) { + if (is.null(data$linewidth) && !is.null(data$size)) { + warning(paste0( + "Using the `size` aesthetic with ", name, " was deprecated in ggplot2 3.4.0.\n", + "Please use the `linewidth` aesthetic instead." + )) + data$linewidth <- data$size + } + data +} snake_class <- getFromNamespace('snake_class', 'ggplot2') snakeize <- getFromNamespace('snakeize', 'ggplot2') diff --git a/R/method-ggplot-add.R b/R/method-ggplot-add.R index d92d8f5d..b3d76a40 100644 --- a/R/method-ggplot-add.R +++ b/R/method-ggplot-add.R @@ -2,7 +2,7 @@ ##' @importFrom ggplot2 ggplot_add ##' @method ggplot_add facet_xlim ##' @export -ggplot_add.facet_xlim <- function(object, plot, object_name) { +ggplot_add.facet_xlim <- function(object, plot, object_name, ...) { var <- panel_col_var(plot) free_x <- plot$facet$params$free$x if (!is.null(free_x)) { @@ -17,12 +17,12 @@ ggplot_add.facet_xlim <- function(object, plot, object_name) { } obj <- geom_blank(aes_(x = ~x), dummy, inherit.aes = FALSE) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @method ggplot_add zoom_clade ##' @export -ggplot_add.zoom_clade <- function(object, plot, object_name) { +ggplot_add.zoom_clade <- function(object, plot, object_name, ...) { zoomClade(plot, object$node, xexpand=object$xexpand) } @@ -83,17 +83,17 @@ ggplot_add.zoom_clade <- function(object, plot, object_name) { ##' @method ggplot_add geom_range ##' @export -ggplot_add.geom_range <- function(object, plot, object_name) { +ggplot_add.geom_range <- function(object, plot, object_name, ...) { obj <- do.call(geom_range_internal, object) assign(x = "range_range", value = object$range, envir = plot$plot_env) assign(x = "range_center", value = object$center, envir = plot$plot_env) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @method ggplot_add layout_ggtree ##' @importFrom ggplot2 expansion ##' @export -ggplot_add.layout_ggtree <- function(object, plot, object_name) { +ggplot_add.layout_ggtree <- function(object, plot, object_name, ...) { if(object$layout == 'fan') { return(open_tree(plot, object$angle)) } @@ -115,7 +115,7 @@ ggplot_add.layout_ggtree <- function(object, plot, object_name) { } else { ## rectangular obj <- coord_cartesian(clip = 'off') } - plot <- ggplot_add(obj, plot, object_name) + plot <- ggplot_add(obj, plot, object_name, ...) plot$plot_env <- build_new_plot_env(plot$plot_env) assign("layout", object$layout, envir = plot$plot_env) return(plot) @@ -125,7 +125,7 @@ ggplot_add.layout_ggtree <- function(object, plot, object_name) { ##' @method ggplot_add range_xaxis ##' @export -ggplot_add.range_xaxis <- function(object, plot, object_name) { +ggplot_add.range_xaxis <- function(object, plot, object_name, ...) { d <- plot$data center <- get("range_center", envir = plot$plot_env) if (center == "auto") { @@ -140,12 +140,12 @@ ggplot_add.range_xaxis <- function(object, plot, object_name) { diff <- cc - d$x[i] obj <- scale_x_continuous(sec.axis = ~. + diff) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @method ggplot_add ggexpand ##' @export -ggplot_add.ggexpand <- function(object, plot, object_name) { +ggplot_add.ggexpand <- function(object, plot, object_name, ...) { side <- object$side obj <- NULL if (side == 'h' || side == 'hv') { @@ -157,7 +157,7 @@ ggplot_add.ggexpand <- function(object, plot, object_name) { lim <- ggexpand_internal(plot, object$ratio, object$direction, 'y') obj <- list(obj, ggplot2::expand_limits(y = lim)) } - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ggexpand_internal <- function(plot, ratio, direction, var) { @@ -178,25 +178,25 @@ ggexpand_internal <- function(plot, ratio, direction, var) { ##' @method ggplot_add tree_inset ##' @export -ggplot_add.tree_inset <- function(object, plot, object_name) { +ggplot_add.tree_inset <- function(object, plot, object_name, ...) { object$tree_view <- plot do.call(inset, object) } ##' @method ggplot_add facet_plot ##' @export -ggplot_add.facet_plot <- function(object, plot, object_name) { +ggplot_add.facet_plot <- function(object, plot, object_name, ...) { plot <- add_panel(plot, object$panel) df <- plot %+>% object$data params <- c(list(data = df, mapping = object$mapping), object$params) obj <- do.call(object$geom, params) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @method ggplot_add tiplab ##' @export -ggplot_add.tiplab <- function(object, plot, object_name) { +ggplot_add.tiplab <- function(object, plot, object_name, ...) { layout <- get_layout(plot) if (layout == 'dendrogram'){ if( object$hjust == 0 ){ @@ -227,7 +227,7 @@ ggplot_add.tiplab <- function(object, plot, object_name) { #object$geom <- NULL object$offset <- NULL object$nodelab <- NULL - res <- ggplot_add.tiplab_ylab(object, plot, object_name) + res <- ggplot_add.tiplab_ylab(object, plot, object_name, ...) return(res) } @@ -239,12 +239,12 @@ ggplot_add.tiplab <- function(object, plot, object_name) { #object$nodelab <- NULL ly <- do.call(geom_tiplab_rectangular, object) } - ggplot_add(ly, plot, object_name) + ggplot_add(ly, plot, object_name, ...) } ##' @method ggplot_add tiplab_ylab ##' @export -ggplot_add.tiplab_ylab <- function(object, plot, object_name) { +ggplot_add.tiplab_ylab <- function(object, plot, object_name, ...) { layout <- get_layout(plot) if (is.null(object$position)) { if (layout == "rectangular") { @@ -295,7 +295,7 @@ ggplot_add.tiplab_ylab <- function(object, plot, object_name) { ##' @method ggplot_add cladelabel ##' @export -ggplot_add.cladelabel <- function(object, plot, object_name) { +ggplot_add.cladelabel <- function(object, plot, object_name, ...) { #layout <- get("layout", envir = plot$plot_env) layout <- get_layout(plot) if (layout == "unrooted" || layout == "daylight") { @@ -303,12 +303,12 @@ ggplot_add.cladelabel <- function(object, plot, object_name) { } else { ly <- do.call(geom_cladelabel_rectangular, object) } - ggplot_add(ly, plot, object_name) + ggplot_add(ly, plot, object_name, ...) } ##' @method ggplot_add cladelab ##' @export -ggplot_add.cladelab <- function(object, plot, object_name){ +ggplot_add.cladelab <- function(object, plot, object_name, ...){ #layout <- get("layout", envir=plot$plot_env) layout <- get_layout(plot) if (is.null(object$mapping) && (is.null(object$node) || is.null(object$label))){ @@ -433,7 +433,7 @@ ggplot_add.cladelab <- function(object, plot, object_name){ bar_obj <- do.call("geom_segment", bar_obj) } obj <- list(annot_obj, bar_obj) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ## ##' @method ggplot_add hilight @@ -461,7 +461,7 @@ ggplot_add.cladelab <- function(object, plot, object_name){ ##' @method ggplot_add hilight ##' @importFrom rlang quo_name ##' @export -ggplot_add.hilight <- function(object, plot, object_name){ +ggplot_add.hilight <- function(object, plot, object_name, ...){ #layout <- get("layout", envir = plot$plot_env) layout <- get_layout(plot) if (!is.character(layout)) layout <- "rectangular" @@ -572,7 +572,7 @@ ggplot_add.hilight <- function(object, plot, object_name){ roundrect = choose_hilight_layer(object = object, type = "roundrect") ) } - plot <- ggplot_add(ly, plot, object_name) + plot <- ggplot_add(ly, plot, object_name, ...) if (object$to.bottom){ idx <- length(plot$layers) plot$layers <- c(plot$layers[idx], plot$layers[-idx]) @@ -583,7 +583,7 @@ ggplot_add.hilight <- function(object, plot, object_name){ ##' @method ggplot_add striplabel ##' @export -ggplot_add.striplabel <- function(object, plot, object_name) { +ggplot_add.striplabel <- function(object, plot, object_name, ...) { d <- plot$data strip_df <- get_striplabel_position(d, object$taxa1, object$taxa2, object$offset, object$align, @@ -620,12 +620,12 @@ ggplot_add.striplabel <- function(object, plot, object_name) { ) } - ggplot_add(list(ly_bar, ly_text), plot, object_name) + ggplot_add(list(ly_bar, ly_text), plot, object_name, ...) } ##' @method ggplot_add striplab ##' @export -ggplot_add.striplab <- function(object, plot, object_name){ +ggplot_add.striplab <- function(object, plot, object_name, ...){ layout <- get_layout(plot) if (is.null(object$data) && is.null(object$taxa1) && is.null(object$taxa2) && is.null(object$label)){ abort("data and taxa1, taxa2, label can't be NULL simultaneously!") @@ -739,14 +739,14 @@ ggplot_add.striplab <- function(object, plot, object_name){ bar_obj <- do.call("geom_segment", bar_obj) #} obj <- list(annot_obj, bar_obj) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @importFrom ggplot2 scale_x_continuous ##' @importFrom ggplot2 scale_x_date ##' @method ggplot_add scale_ggtree ##' @export -ggplot_add.scale_ggtree <- function(object, plot, object_name) { +ggplot_add.scale_ggtree <- function(object, plot, object_name, ...) { mrsd <- get("mrsd", envir = plot$plot_env) if (!is.null(mrsd) && inherits(plot$data$x, "Date")) { x <- Date2decimal(plot$data$x) @@ -789,13 +789,13 @@ ggplot_add.scale_ggtree <- function(object, plot, object_name) { } else { obj <- scale_x_continuous(breaks=breaks, labels=labels) } - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } ##' @importFrom ggplot2 aes_ ##' @importFrom rlang abort as_name ##' @export -ggplot_add.taxalink <- function(object, plot, object_name){ +ggplot_add.taxalink <- function(object, plot, object_name, ...){ #layout <- get("layout", envir = plot$plot_env) layout <- get_layout(plot) if (object$outward=="auto"){ @@ -848,5 +848,5 @@ ggplot_add.taxalink <- function(object, plot, object_name){ } params <- c(list(data=object$data, mapping=object$mapping, outward=object$outward), object$params) obj <- do.call("geom_curvelink", params) - ggplot_add(obj, plot, object_name) + ggplot_add(obj, plot, object_name, ...) } From aca415cb843d3d77617fcd14615d836bdcf6faca Mon Sep 17 00:00:00 2001 From: xiangpin Date: Thu, 26 Jun 2025 14:35:39 +0800 Subject: [PATCH 3/4] avoid the error that could not find function is.waive --- NAMESPACE | 1 + R/geom_segment.R | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 9908cf8a..d7f8fa63 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -227,6 +227,7 @@ importFrom(ggplot2,ggproto) importFrom(ggplot2,ggsave) importFrom(ggplot2,guide_legend) importFrom(ggplot2,guides) +importFrom(ggplot2,is_waiver) importFrom(ggplot2,last_plot) importFrom(ggplot2,layer) importFrom(ggplot2,margin) diff --git a/R/geom_segment.R b/R/geom_segment.R index 9aee1b69..5e098091 100644 --- a/R/geom_segment.R +++ b/R/geom_segment.R @@ -135,6 +135,13 @@ GeomSegmentGGtree <- ggproto("GeomSegmentGGtree", GeomSegment, } ) +#' @importFrom ggplot2 is_waiver +empty <- function(df){ + is.null(df) || nrow(df) == 0 || ncol(df) == 0 || is_waiver(df) +} -empty <- getFromNamespace("empty", "ggplot2") -`%||%` <- getFromNamespace("%||%", "ggplot2") +`%||%` <- function (a, b){ + if (!is.null(a)) + a + else b +} From 1193ff86154ff3482d9e34605f35ed8a1befcef0 Mon Sep 17 00:00:00 2001 From: xiangpin Date: Fri, 11 Jul 2025 15:43:19 +0800 Subject: [PATCH 4/4] using is_waiver codes avoid error when using old ggplot2 version --- NAMESPACE | 1 - R/geom_segment.R | 6 +++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index d7f8fa63..9908cf8a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -227,7 +227,6 @@ importFrom(ggplot2,ggproto) importFrom(ggplot2,ggsave) importFrom(ggplot2,guide_legend) importFrom(ggplot2,guides) -importFrom(ggplot2,is_waiver) importFrom(ggplot2,last_plot) importFrom(ggplot2,layer) importFrom(ggplot2,margin) diff --git a/R/geom_segment.R b/R/geom_segment.R index 5e098091..f1e4b282 100644 --- a/R/geom_segment.R +++ b/R/geom_segment.R @@ -135,7 +135,11 @@ GeomSegmentGGtree <- ggproto("GeomSegmentGGtree", GeomSegment, } ) -#' @importFrom ggplot2 is_waiver + +is_waiver <- function(x){ + inherits(x, "waiver") +} + empty <- function(df){ is.null(df) || nrow(df) == 0 || ncol(df) == 0 || is_waiver(df) }