From e127cc9c4184d5c9055ae367cff1e6a9ff913847 Mon Sep 17 00:00:00 2001 From: Thomas Lin Pedersen Date: Thu, 15 Apr 2021 14:26:54 +0200 Subject: [PATCH 1/3] triple the range of x used for calculating the line --- NEWS.md | 2 ++ R/geom-abline.r | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/NEWS.md b/NEWS.md index f96283e156..b06be03b5f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # ggplot2 (development version) +* Extent the range of the line created by `geom_abline()` so that line ending + is not visible for large linewidths (@thomasp85, #4024) * Make sure that default labels from default mappings doesn't overwrite default labels from explicit mappings (@thomasp85, #2406) diff --git a/R/geom-abline.r b/R/geom-abline.r index 60161c1fc1..e495adf234 100644 --- a/R/geom-abline.r +++ b/R/geom-abline.r @@ -127,6 +127,12 @@ GeomAbline <- ggproto("GeomAbline", Geom, draw_panel = function(data, panel_params, coord) { ranges <- coord$backtransform_range(panel_params) + if (T || coord$clip == "on" && coord$is_linear()) { + # Ensure the line extends well outside the panel to avoid visible line + # ending for thick lines + ranges$x <- ranges$x + c(-1, 1) * diff(ranges$x) + } + data$x <- ranges$x[1] data$xend <- ranges$x[2] data$y <- ranges$x[1] * data$slope + data$intercept From 2f310b0b10ccd3cf0087e6be03eb93627c487946 Mon Sep 17 00:00:00 2001 From: Thomas Lin Pedersen Date: Thu, 15 Apr 2021 14:55:34 +0200 Subject: [PATCH 2/3] remove debug code --- R/geom-abline.r | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/geom-abline.r b/R/geom-abline.r index e495adf234..35b53ce57f 100644 --- a/R/geom-abline.r +++ b/R/geom-abline.r @@ -127,7 +127,7 @@ GeomAbline <- ggproto("GeomAbline", Geom, draw_panel = function(data, panel_params, coord) { ranges <- coord$backtransform_range(panel_params) - if (T || coord$clip == "on" && coord$is_linear()) { + if (coord$clip == "on" && coord$is_linear()) { # Ensure the line extends well outside the panel to avoid visible line # ending for thick lines ranges$x <- ranges$x + c(-1, 1) * diff(ranges$x) From d79b923b6aac9609b9612e7ee9d89b6d2d0b4147 Mon Sep 17 00:00:00 2001 From: Thomas Lin Pedersen Date: Fri, 16 Apr 2021 09:23:15 +0200 Subject: [PATCH 3/3] update visual tests --- .../cartesian-lines-intersect-mid-bars.svg | 2 +- .../flipped-lines-intersect-mid-bars.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/figs/geom-hline-vline-abline/cartesian-lines-intersect-mid-bars.svg b/tests/figs/geom-hline-vline-abline/cartesian-lines-intersect-mid-bars.svg index 36e6c691c0..0343082192 100644 --- a/tests/figs/geom-hline-vline-abline/cartesian-lines-intersect-mid-bars.svg +++ b/tests/figs/geom-hline-vline-abline/cartesian-lines-intersect-mid-bars.svg @@ -31,7 +31,7 @@ - + diff --git a/tests/figs/geom-hline-vline-abline/flipped-lines-intersect-mid-bars.svg b/tests/figs/geom-hline-vline-abline/flipped-lines-intersect-mid-bars.svg index c542172c56..3ce5f4107e 100644 --- a/tests/figs/geom-hline-vline-abline/flipped-lines-intersect-mid-bars.svg +++ b/tests/figs/geom-hline-vline-abline/flipped-lines-intersect-mid-bars.svg @@ -31,7 +31,7 @@ - +