geom_segment {ggplot2} | R Documentation |
Single line segments.
geom_segment(mapping = NULL, data = NULL, stat = "identity", position = "identity", arrow = NULL, lineend = "butt", na.rm = FALSE, ...)
arrow |
specification for arrow heads, as created by arrow() |
lineend |
Line end style (round, butt, square) |
mapping |
The aesthetic mapping, usually constructed
with |
data |
A layer specific dataset - only needed if you want to override the plot defaults. |
stat |
The statistical transformation to use on the data for this layer. |
position |
The position adjustment to use for overlappling points on this layer |
na.rm |
If |
... |
other arguments passed on to
|
geom_segment
understands the following aesthetics (required aesthetics are in bold):
x
xend
y
yend
alpha
colour
linetype
size
geom_path
and geom_line
for
multi- segment lines and paths.
library(grid) # needed for arrow function p <- ggplot(seals, aes(x = long, y = lat)) (p <- p + geom_segment(aes(xend = long + delta_long, yend = lat + delta_lat), arrow = arrow(length = unit(0.1,"cm")))) if (require("maps")) { xlim <- range(seals$long) ylim <- range(seals$lat) usamap <- data.frame(map("world", xlim = xlim, ylim = ylim, plot = FALSE)[c("x","y")]) usamap <- rbind(usamap, NA, data.frame(map('state', xlim = xlim, ylim = ylim, plot = FALSE)[c("x","y")])) names(usamap) <- c("long", "lat") p + geom_path(data = usamap) + scale_x_continuous(limits = xlim) } # You can also use geom_segment to recreate plot(type = "h") : counts <- as.data.frame(table(x = rpois(100,5))) counts$x <- as.numeric(as.character(counts$x)) with(counts, plot(x, Freq, type = "h", lwd = 10)) qplot(x, Freq, data = counts, geom = "segment", yend = 0, xend = x, size = I(10)) # Adding line segments library(grid) # needed for arrow function b <- ggplot(mtcars, aes(wt, mpg)) + geom_point() b + geom_segment(aes(x = 2, y = 15, xend = 2, yend = 25)) b + geom_segment(aes(x = 2, y = 15, xend = 3, yend = 15)) b + geom_segment(aes(x = 5, y = 30, xend = 3.5, yend = 25), arrow = arrow(length = unit(0.5, "cm")))