Make arrowheads with any function

## Arguments

- .fun
a function (defaults to dnorm)

- lower_bound
lowest value passed to .fun

- upper_bound
highest value passed to .fun

- ...
arguments passed to .fun

- base_width
If closed, size of feet

- thickness
If closed, thickness of shape (can be negative)

- closed
make polygon closed

- minimum_value
smallest value in function

- rotate
rotation angle in radians

- rescale
a single value or 2-length vector for scaling in x and y

- nudge
a single value or 2-length vector for nudging in x and y

- transformations
a vector of transformation functions

- n
number of points in polygon

- plot
plot arrowhead if TRUE

## Examples

```
# A normal distribution
xy <- arrow_head_function(dnorm, plot = TRUE)
# if closed = FALSE, set thickness and base_width
xy <- arrow_head_function(dnorm, plot = TRUE, closed = FALSE,
thickness = 1.5,
base_width = .25)
# A cauchy distribution
xy <- arrow_head_function(dt, df = 1, plot = TRUE)
# open with thickness = 1.5
xy <- arrow_head_function(
dt,
df = 1,
plot = TRUE,
closed = FALSE,
thickness = 1.5
)
# thickness > 2 creates a bulge
xy <- arrow_head_function(
dt,
df = 1,
lower_bound = -3.25,
upper_bound = 3.25,
closed = FALSE,
thickness = 2.5,
plot = TRUE,
rescale = 1 / 3,
nudge = c(2 / 3, 0)
)
# Make a new function
mytrident <- function(x, s = 160) {
k <- length(x)
y1 <- dbeta(x, shape1 = s, shape2 = s) * 2
y2 <- dbeta(x, shape1 = s * .9, shape2 = s * .1)
y3 <- dbeta(x, shape1 = s * .1 , shape2 = s * .9)
y1 + y2 + y3
}
xy <- arrow_head_function(
mytrident,
lower_bound = 0,
upper_bound = 1,
plot = TRUE,
minimum_value = -3,
rescale = .5,
nudge = c(.5, 0)
)
```