R: Connected points

geom_pointpath {lemon} | R Documentation

## Connected points

### Description

`geom_pointpath` combines `geom_point` and `geom_path`, such that a) when jittering is used, both lines and points stay connected, and b) provides a visual effect by adding a small gap between the point and the end of line. `geom_pointline` combines `geom_point` and `geom_line`.

### Usage

    geom_pointpath(mapping = NULL, data = NULL, stat = "identity",
      position = "identity", na.rm = FALSE, show.legend = NA,
      inherit.aes = TRUE, distance = unit(3, "pt"), lineend = "butt",
      linejoin = "round", linemitre = 1, linesize = 0.5,
      linecolour = waiver(), linecolor = waiver(), arrow = NULL, ...)

    geom_pointline(mapping = NULL, data = NULL, stat = "identity",
      position = "identity", na.rm = FALSE, show.legend = NA,
      inherit.aes = TRUE, distance = unit(3, "pt"), lineend = "butt",
      linejoin = "round", linemitre = 1, linesize = 0.5,
      linecolour = waiver(), linecolor = waiver(), arrow = NULL, ...)

### Arguments

`mapping` | Set of aesthetic mappings created by `aes` or `aes_`.
`data` | The data to be displayed in this layer.
`stat` | The statistical transformation to use on the data for this layer, as a string.
`position` | Position adjustment, either as a string, or the result of a call to a position adjustment function (e.g. `position_jitter`). Both lines and points gets the same adjustment (this is where the function excels over `geom_point() + geom_line()`).
`na.rm` | If `FALSE` (default), missing values are removed with a warning. If `TRUE`, missing values are silently removed.
`show.legend` | Logical. Should this layer be included in the legends? `NA` (default), includes if any aesthetics are mapped. `FALSE` never includes, and `TRUE` always includes.
`inherit.aes` | If `FALSE`, overrides the default aesthetic, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. `borders`.
`distance` | Gap size between point and end of lines; use `unit`. Is converted to 'pt' if given as simple numeric.
`lineend` | Line end style (round, butt, square).
`linejoin` | Line join style (round, mintre, bevel).
`linemitre` | Line mitre limit (number greater than 1).
`linesize` | Width of of line.
`linecolour, linecolor` | When not `waiver()`, the line is drawn with this colour instead of that set by aesthetic `colour`.
`arrow` | Arrow specification, as created by `arrow`.
`...` | other arguments passed on to `layer`.

### Details

`geom_pointpath` connects the observations in the same order in which they appear in the data. `geom_pointline` connects them in order of the variable on the x-axis.

Both `geom_pointpath` and `geom_pointline` will only connect observations within the same group! However, if `linecolour` is not `waiver()`, connections will be made between groups, but possible in an incorrect order.

### Aesthetics

`geom_pointline` and `geom_pointpath` understands the following aesthetics (required aesthetics are in bold):

- x

- y

- alpha

- colour – sets colour of point. Only affects line if `linecolour=waiver()`.

- stroke

- shape

- stroke

- group

- linetype

- size – only affects point size. Width of line is set with `linesize` and cannot be linked to an aesthetic.

### Examples

    # geom_point examples
    library(ggplot2)

    p <- ggplot(mtcars, aes(wt, mpg))
    p + geom_point() + geom_line()
    p + geom_pointline()
    p + geom_pointline(linecolour='brown')

    # Add aesthetic mappings
    p + geom_pointline(aes(colour = factor(cyl)))
    # Using linecolour preserved groups.
    p + geom_pointline(aes(colour = factor(cyl)), linecolour='brown')

    ## If you want to combine the pretty lines of pointline that do *not* respect
    ## grouping (or order), combine several layers with geom_point on top:
    p + geom_pointline() + geom_point(aes(colour=factor(cyl)))

    p + geom_point(aes(shape = factor(cyl)))
    p + geom_pointline(aes(shape = factor(cyl)))
    p + geom_point(aes(size = qsec))
    p + geom_pointline(aes(size=qsec))

    # Change scales
    p + geom_pointline(aes(colour = cyl)) + scale_colour_gradient(low = "blue")
    p + geom_pointline(aes(colour = cyl), linecolour='black') + scale_colour_gradient(low = "blue")
    p + geom_pointline(aes(shape = factor(cyl))) + scale_shape(solid = FALSE)

    # For shapes that have a border (like 21), you can colour the inside and
    # outside separately. Use the stroke aesthetic to modify the width of the
    # border
    ggplot(mtcars, aes(wt, mpg)) +
      geom_pointline(shape = 21, colour = "black", fill = "white",
                     size = 5, stroke = 5, distance = unit(10, 'pt'))

    # geom_line() examples, updated to geom_pointline

    # geom_line() is suitable for time series
    ggplot(economics, aes(date, unemploy)) + geom_pointline()
    ggplot(economics_long, aes(date, value01, colour = variable)) +
      geom_pointline()

    # geom_step() is useful when you want to highlight exactly when
    # the y value chanes
    recent <- economics[economics$date > as.Date("2013-01-01"), ]
    ggplot(recent, aes(date, unemploy)) + geom_pointline()
    ggplot(recent, aes(date, unemploy)) + geom_step()
    # geom_pointstep is not implemented; no idea of what to expect.

    # geom_path lets you explore how two variables are related over time,
    # e.g. unemployment and personal savings rate
    m <- ggplot(economics, aes(unemploy/pop, psavert))
    m + geom_pointpath()
    m + geom_pointpath(aes(colour = as.numeric(date)))

    # NAs break the line. Use na.rm = T to suppress the warning message
    df <- data.frame(
      x = 1:5,
      y1 = c(1, 2, 3, 4, NA),
      y2 = c(NA, 2, 3, 4, 5),
      y3 = c(1, 2, NA, 4, 5)
    )
    ggplot(df, aes(x, y1)) + geom_point() + geom_line()
    ggplot(df, aes(x, y1)) + geom_pointline()

    ggplot(df, aes(x, y3)) + geom_point() + geom_line()
    #geom_pointline does not break where NA's are missing.
    ggplot(df, aes(x, y3)) + geom_pointline()

    # Setting line type vs colour/size
    # Line type needs to be applied to a line as a whole, so it can
    # not be used with colour or size that vary across a line
    x <- seq(0.01, .99, length.out = 100)
    df <- data.frame(
      x = rep(x, 2),
      y = c(qlogis(x), 2 * qlogis(x)),
      group = rep(c("a","b"),
                  each = 100)
    )
    p <- ggplot(df, aes(x=x, y=y, group=group))
    # These work
    p + geom_pointline(linetype=2)
    p + geom_pointline(aes(colour = group), linetype = 2)
    p + geom_line(aes(colour = x))
    p + geom_pointline(aes(colour = x))

[Package lemon version 0.3.3 Index]