From e1eb53742608ca355466042e14405be21af553a0 Mon Sep 17 00:00:00 2001 From: whelena Date: Fri, 15 May 2026 19:04:26 -0700 Subject: [PATCH 1/4] apply horizontal padding --- R/SRCGrob.R | 1 + R/make.clone.tree.grobs.R | 4 +++- R/set.up.plot.area.R | 14 +++++++------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/R/SRCGrob.R b/R/SRCGrob.R index 63c5877..16bc3a0 100644 --- a/R/SRCGrob.R +++ b/R/SRCGrob.R @@ -113,6 +113,7 @@ SRCGrob <- function( axis.cex = axis.cex, xaxis.label = xaxis.label, min.width = min.width, + horizontal.padding = horizontal.padding, label.nodes = label.nodes, node.col = node.col, label.cex = label.cex, diff --git a/R/make.clone.tree.grobs.R b/R/make.clone.tree.grobs.R index aca57fa..71ffd34 100644 --- a/R/make.clone.tree.grobs.R +++ b/R/make.clone.tree.grobs.R @@ -27,6 +27,7 @@ make.clone.tree.grobs <- function( xaxis.label, min.width, node.radius, + horizontal.padding = 0, label.nodes, node.col, label.cex, @@ -146,7 +147,8 @@ make.clone.tree.grobs <- function( wid, min.width, node.radius, - start.angle = start.angle + start.angle = start.angle, + horizontal.padding = horizontal.padding ); if (!no.ccf) { diff --git a/R/set.up.plot.area.R b/R/set.up.plot.area.R index 2973a25..d745de4 100644 --- a/R/set.up.plot.area.R +++ b/R/set.up.plot.area.R @@ -13,10 +13,11 @@ calculate.main.plot.size <- function( wid, min.width, node.radius, - start.angle = 0 + start.angle = 0, + horizontal.padding = 0 ) { - padding <- 2 * node.radius / scale1; + x.padding <- horizontal.padding / scale1; all.x <- clone.out$v$x; all.y <- clone.out$v$y; @@ -25,8 +26,8 @@ calculate.main.plot.size <- function( all.y <- c(all.y, unlist(lapply(clone.out$clones, function(cl) cl$y))); } - xmin <- min(all.x); - xmax <- max(all.x); + xmin <- min(all.x) - x.padding; + xmax <- max(all.x) + x.padding; ymin <- min(all.y); ymax <- max(all.y); @@ -320,8 +321,7 @@ add.xaxis <- function( gp = gpar(cex = axis.label.cex), main = (axis.position == 'left') ); - # clone.out$ylims <- unit(clone.out$ylims * 1.5, 'native') - xaxis <- extend.axis(xaxis, unit(clone.out$ylims * 1.5, 'native'), type = 'y'); + xaxis <- extend.axis(xaxis, unit(clone.out$ylims, 'native'), type = 'y'); } else { # For vertical plots, use xaxisGrob xaxis <- xaxisGrob( @@ -331,7 +331,7 @@ add.xaxis <- function( gp = gpar(cex = axis.label.cex), main = (axis.position == 'bottom') ); - xaxis <- extend.axis(xaxis, unit(clone.out$xlims * 1.5, 'native'), type = 'x'); + xaxis <- extend.axis(xaxis, unit(clone.out$xlims, 'native'), type = 'x'); } # Add the axis label xaxis.gTree <- add.axis.label( From 89c2398190ac220537922fa0dd462056eb011799 Mon Sep 17 00:00:00 2001 From: whelena Date: Sat, 16 May 2026 16:33:42 -0700 Subject: [PATCH 2/4] toggle between horizontal and vertical padding --- R/make.clone.tree.grobs.R | 10 +++++++++- R/set.up.plot.area.R | 8 +++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/R/make.clone.tree.grobs.R b/R/make.clone.tree.grobs.R index 71ffd34..1707097 100644 --- a/R/make.clone.tree.grobs.R +++ b/R/make.clone.tree.grobs.R @@ -141,6 +141,13 @@ make.clone.tree.grobs <- function( } } + is.horizontal.direction <- if (is.character(plotting.direction)) { + plotting.direction %in% c('left', 'right') + } else { + sa <- start.angle %% (2 * pi); + abs(sa - pi / 2) < pi / 4 || abs(sa - 3 * pi / 2) < pi / 4 + } + plot.size <- calculate.main.plot.size( clone.out, scale1, @@ -148,7 +155,8 @@ make.clone.tree.grobs <- function( min.width, node.radius, start.angle = start.angle, - horizontal.padding = horizontal.padding + horizontal.padding = if (is.horizontal.direction) 0 else horizontal.padding, + vertical.padding = if (is.horizontal.direction) horizontal.padding else 0 ); if (!no.ccf) { diff --git a/R/set.up.plot.area.R b/R/set.up.plot.area.R index d745de4..0b1ad0f 100644 --- a/R/set.up.plot.area.R +++ b/R/set.up.plot.area.R @@ -14,10 +14,12 @@ calculate.main.plot.size <- function( min.width, node.radius, start.angle = 0, - horizontal.padding = 0 + horizontal.padding = 0, + vertical.padding = 0 ) { x.padding <- horizontal.padding / scale1; + y.padding <- vertical.padding / scale1; all.x <- clone.out$v$x; all.y <- clone.out$v$y; @@ -28,8 +30,8 @@ calculate.main.plot.size <- function( xmin <- min(all.x) - x.padding; xmax <- max(all.x) + x.padding; - ymin <- min(all.y); - ymax <- max(all.y); + ymin <- min(all.y) - y.padding; + ymax <- max(all.y) + y.padding; # Guard against degenerate scales (e.g. all nodes at x=0 when polygons are disabled) if (xmax == xmin) { From db616d920cea6fba8735e52b4e8596ab8a7b5e63 Mon Sep 17 00:00:00 2001 From: whelena Date: Sat, 16 May 2026 16:38:25 -0700 Subject: [PATCH 3/4] reemove nSNV axis for horizontal fish plot --- R/set.up.plot.area.R | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/R/set.up.plot.area.R b/R/set.up.plot.area.R index 0b1ad0f..292fef3 100644 --- a/R/set.up.plot.area.R +++ b/R/set.up.plot.area.R @@ -166,7 +166,10 @@ add.axes <- function( # Skip x-axis if plotting.direction is numeric (custom angle) draw.xaxis <- !is.numeric(plotting.direction); - + if (plotting.direction != 'down') { + message('Non-vertical plotting direction detected; skipping (nSNV) x-axis rendering.'); + yaxis.position <- 'none'; + } if (!no.ccf && 'ccf' %in% colnames(clone.out$v) && all(!is.na(clone.out$v$ccf)) && draw.xaxis) { add.xaxis( clone.out, From fd3a41337cf5994f97d5ee0e6d13426281386d78 Mon Sep 17 00:00:00 2001 From: whelena Date: Sat, 16 May 2026 16:39:45 -0700 Subject: [PATCH 4/4] update NEWS.md --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 8ececee..e8b5c7a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -35,6 +35,7 @@ * Fix bug where the x-axis only renders when y-axis is also rendered. * Fix issue when creating polygons with more than 2 siblings * Use updated `R CMD check` CI/CD action +* `plotting.direction` generalizable to fishplots with CCF polygons ## Bug * Resolved issue where the spread parameter was not applied in dendrogram mode.