Draw polygons with expansion/contraction and/or rounded corners
This geom is a cousin of ggplot2::geom_polygon()
with the added
possibility of expanding or contracting the polygon by an absolute amount
(e.g. 1 cm). Furthermore, it is possible to round the corners of the polygon,
again by an absolute amount. The resulting geom reacts to resizing of the
plot, so the expansion/contraction and corner radius will not get distorted.
If no expansion/contraction or corner radius is specified, the geom falls
back to geom_polygon
so there is no performance penality in using this
instead of geom_polygon
.
geom_shape( mapping = NULL, data = NULL, stat = "identity", position = "identity", expand = 0, radius = 0, ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE )
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
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. |
expand |
A numeric or unit vector of length one, specifying the expansion amount. Negative values will result in contraction instead. If the value is given as a numeric it will be understood as a proportion of the plot area width. |
radius |
As |
... |
Other arguments passed on to |
na.rm |
If |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
geom_shape understand the following aesthetics (required aesthetics are in bold):
x
y
color
fill
group
size
linetype
alpha
Some settings can result in the dissappearance of polygons, specifically when contracting or rounding corners with a relatively large amount. Also note that x and y scale limits does not take expansion into account and the resulting polygon might thus not fit into the plot.
Thomas Lin Pedersen
shape <- data.frame( x = c(0.5, 1, 0.75, 0.25, 0), y = c(0, 0.5, 1, 0.75, 0.25) ) # Expand and round ggplot(shape, aes(x = x, y = y)) + geom_shape(expand = unit(1, 'cm'), radius = unit(0.5, 'cm')) + geom_polygon(fill = 'red') # Contract ggplot(shape, aes(x = x, y = y)) + geom_polygon(fill = 'red') + geom_shape(expand = unit(-1, 'cm')) # Only round corners ggplot(shape, aes(x = x, y = y)) + geom_polygon(fill = 'red') + geom_shape(radius = unit(1, 'cm'))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.