Description Usage Arguments Aesthetics Computed variables Author(s) Examples
This set of stats and geoms makes it possible to draw b-splines based on a
set of control points. As with geom_bezier()
there exists several
versions each having there own strengths. The base version calculates the
b-spline as a number of points along the spline and connects these with a
path. The *2 version does the same but in addition interpolates aesthetics
between each control point. This makes the *2 version considerably slower
so it shouldn't be used unless needed. The *0 version uses
grid::xsplineGrob()
with shape = 1
to approximate a
b-spline for a high performant version.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | stat_bspline(mapping = NULL, data = NULL, geom = "path",
position = "identity", na.rm = FALSE, n = 100, type = "clamped",
show.legend = NA, inherit.aes = TRUE, ...)
geom_bspline(mapping = NULL, data = NULL, stat = "bspline",
position = "identity", arrow = NULL, n = 100, type = "clamped",
lineend = "butt", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE,
...)
stat_bspline2(mapping = NULL, data = NULL, geom = "path_interpolate",
position = "identity", na.rm = FALSE, n = 100, type = "clamped",
show.legend = NA, inherit.aes = TRUE, ...)
geom_bspline2(mapping = NULL, data = NULL, stat = "bspline2",
position = "identity", arrow = NULL, n = 100, type = "clamped",
lineend = "butt", na.rm = FALSE, show.legend = NA, inherit.aes = TRUE,
...)
stat_bspline0(mapping = NULL, data = NULL, geom = "bspline0",
position = "identity", na.rm = FALSE, show.legend = NA,
inherit.aes = TRUE, type = "clamped", ...)
geom_bspline0(mapping = NULL, data = NULL, stat = "identity",
position = "identity", arrow = NULL, lineend = "butt", na.rm = FALSE,
show.legend = NA, inherit.aes = TRUE, type = "clamped", ...)
|
mapping |
Set of aesthetic mappings created by |
data |
The data to be displayed in this layer. There are three options: If A A |
geom |
The geometric object to use display the data |
position |
Position adjustment, either as a string, or the result of a call to a position adjustment function. |
na.rm |
If |
n |
The number of points generated for each spline |
type |
Either |
show.legend |
logical. Should this layer be included in the legends?
|
inherit.aes |
If |
... |
other arguments passed on to |
stat |
The statistical transformation to use on the data for this layer, as a string. |
arrow |
Arrow specification, as created by |
lineend |
Line end style (round, butt, square) |
geom_bspline understand the following aesthetics (required aesthetics are in bold):
x
y
color
size
linetype
alpha
lineend
The coordinates for the path describing the spline
The progression along the interpolation mapped between 0 and 1
Thomas Lin Pedersen. The C++ code for De Boor's algorithm has been adapted from Jason Yu-Tseh Chi implementation
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # Define some control points
cp <- data.frame(
x = c(0, -5, -5, 5, 5, 2.5, 5, 7.5, 5, 2.5, 5, 7.5, 5, -2.5, -5, -7.5, -5,
-2.5, -5, -7.5, -5),
y = c(0, -5, 5, -5, 5, 5, 7.5, 5, 2.5, -5, -7.5, -5, -2.5, 5, 7.5, 5, 2.5,
-5, -7.5, -5, -2.5),
class = sample(letters[1:3], 21, replace = TRUE)
)
# Now create some paths between them
paths <- data.frame(
ind = c(7,5,8,8,5,9,9,5,6,6,5,7,7,5,1,3,15,8,5,1,3,17,9,5,1,2,19,6,5,1,4,
12,7,5,1,4,10,6,5,1,2,20),
group = c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7,8,8,8,8,8,
9,9,9,9,9,10,10,10,10,10)
)
paths$x <- cp$x[paths$ind]
paths$y <- cp$y[paths$ind]
paths$class <- cp$class[paths$ind]
ggplot() +
geom_bspline(aes(x=x, y=y, group=group, colour = ..index..), data=paths) +
geom_point(aes(x=x, y=y), data=cp, color='steelblue')
ggplot() +
geom_bspline2(aes(x=x, y=y, group=group, colour = class), data=paths) +
geom_point(aes(x=x, y=y), data=cp, color='steelblue')
ggplot() +
geom_bspline0(aes(x=x, y=y, group=group), data=paths) +
geom_point(aes(x=x, y=y), data=cp, color='steelblue')
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.