geom_segment_plus: Extended geom_segment

View source: R/geom_segment_plus.R

geom_segment_plusR Documentation

Extended geom_segment

Description

Still a WIP. The dropping and warning of segments switching directions isn't really working correctly yet. geom_segment_plus is an updated version of mo-seph's Stack Overflow code (https://stackoverflow.com/q/14647988/4560765), which no longer works. mo-seph's code in turn is an extension of ggplot2's geom_segment, but with the ability to offset segments that overlap, and to shorten the end or beginning of the segment.

Usage

geom_segment_plus(
  mapping = NULL,
  data = NULL,
  stat = "identity",
  position = "identity",
  ...,
  arrow = NULL,
  arrow.fill = NULL,
  lineend = "butt",
  linejoin = "round",
  shorten.limit = c("warn", "drop", "ignore"),
  na.rm = FALSE,
  show.legend = NA,
  inherit.aes = TRUE
)

Arguments

mapping, data, ..., stat, parse, inherit.aes

See the documentation for ggplot2::geom_segment()

Details

This code basically has three new possible parameters:

  • shorten.start/shorten.end: this moves the start/end of the segment closer to the midpoint by a proportion

  • shorten.start.abs/shorten.end.abs: this moves the start/end of the segment closer to the midpoint by an absolute value

  • offset: if two segments fully overlap, this offsets them slightly

Examples

d <- data.frame(x=c(-1,1),
           y=c(-1,1),
           x.to=c(2,-1),
           y.to=c(-1,1))
d %>%
  ggplot(aes( x=x, y=y ) ) +
  geom_point() +
  geom_segment_plus(aes( x=x, y=y, xend=x.to, yend=y.to ),
                    lineend="round", arrow=arrow(length=unit(0.15, "inches")),
                    offset=0.00, shorten.start=0.5, shorten.end=0,
                    shorten.end.abs=0.15,
                    shorten.limit = 'drop')
d %>%
  ggplot(aes( x=x, y=y ) ) +
  geom_point() +
  geom_segment_plus(aes( x=x, y=y, xend=x.to, yend=y.to ),
                    lineend="round", arrow=arrow(length=unit(0.15, "inches")),
                    offset=0.00, shorten.start=1, shorten.end=0,
                    shorten.end.abs=1.25,
                    shorten.limit = 'drop')

burchill/zplyr documentation built on Feb. 2, 2023, 11:01 a.m.