# How to Draw Arrows in ggplot2 (With Examples)

You can use the following basic syntax to draw an arrow in a plot in ggplot2:

```library(ggplot2)

ggplot(df, aes(x=x, y=y)) +
geom_point() +
geom_segment(aes(x=5, y=6, xend=8, yend=9), arrow = arrow(length=unit(0.5, 'cm')))
```

Here is what each argument does in the geom_segment() function:

• x: The x-value to start at
• y: The y-value to start at
• xend: The x-value to end at
• yend: The y-value to end at
• arrow: The length of the arrow head

The following example shows how to draw an arrow using ggplot2 in practice.

## Example: Draw Arrows in ggplot2

Suppose we have the following data frame that contains information on the number of points scored and rebounds collected by various basketball players:

```#create data frame
df <- data.frame(points=c(3, 3, 5, 6, 7, 8, 9, 9, 8, 5),
rebounds=c(2, 6, 5, 5, 8, 5, 9, 9, 8, 6))

#view data frame
df

points rebounds
1       3        2
2       3        6
3       5        5
4       6        5
5       7        8
6       8        5
7       9        9
8       9        9
9       8        8
10      5        6```

We can use the following syntax to create a scatter plot in ggplot2 and add an arrow to specific location on the plot:

```library(ggplot2)

ggplot(df, aes(x=points, y=rebounds)) +
geom_point() +
geom_segment(aes(x=5, y=6, xend=8, yend=9), arrow = arrow(length=unit(.5, 'cm')))``` Feel free to modify the value in the arrow() function to increase or decrease the size of the arrow head.

For example, the following code shows how to increase the size:

```library(ggplot2)

ggplot(df, aes(x=points, y=rebounds)) +
geom_point() +
geom_segment(aes(x=5, y=6, xend=8, yend=9), arrow = arrow(length=unit(2, 'cm')))``` You can also use the color and lwd arguments to change the color and line width of the arrow, respectively:

```library(ggplot2)

#create scatterplot and add customized arrow
ggplot(df, aes(x=points, y=rebounds)) +
geom_point() +
geom_segment(aes(x=5, y=6, xend=8, yend=9), arrow = arrow(length=unit(.5, 'cm')),
color='red', lwd=3)``` Feel free to play around with the various arguments in the geom_segment() function to create an arrow that looks exactly how you’d like.