scale_axes_nfl {nflplotR} | R Documentation |
Axis Scales for NFL Team Logos
Description
These functions map NFL team names to their team logos and make them available as axis labels
Usage
scale_x_nfl(
...,
expand = ggplot2::waiver(),
guide = ggplot2::waiver(),
position = "bottom",
size = 12
)
scale_y_nfl(
...,
expand = ggplot2::waiver(),
guide = ggplot2::waiver(),
position = "left",
size = 12
)
scale_x_nfl_headshots(
...,
expand = ggplot2::waiver(),
guide = ggplot2::waiver(),
position = "bottom",
size = 20
)
scale_y_nfl_headshots(
...,
expand = ggplot2::waiver(),
guide = ggplot2::waiver(),
position = "left",
size = 30
)
Arguments
... |
Arguments passed on to
|
expand |
For position scales, a vector of range expansion constants used to add some
padding around the data to ensure that they are placed some distance
away from the axes. Use the convenience function |
guide |
A function used to create a guide or its name. See
|
position |
For position scales, The position of the axis.
|
size |
The logo size in pixels. It is applied as height for an x-scale and as width for an y-scale. |
Details
The scale translates the NFL team abbreviations into raw image
html and places the html as axis labels. Because of the way ggplots are
constructed, it is necessary to adjust the theme()
after calling this
scale. This can be done by calling theme_x_nfl()
or theme_y_nfl()
or alternatively by manually changing the relevant axis.text
to
ggtext::element_markdown()
. However, this will only work if an underlying
dependency, "gridtext", is installed with a newer version than 0.1.4
Value
A discrete ggplot2 scale created with ggplot2::scale_x_discrete()
or
ggplot2::scale_y_discrete()
.
See Also
Examples
library(nflplotR)
library(ggplot2)
team_abbr <- valid_team_names()
# remove conference logos from this example
team_abbr <- team_abbr[!team_abbr %in% c("AFC", "NFC")]
df <- data.frame(
random_value = runif(length(team_abbr), 0, 1),
teams = team_abbr
)
if (utils::packageVersion("gridtext") > "0.1.4" && FALSE){
# use logos for x-axis
ggplot(df, aes(x = teams, y = random_value)) +
geom_col(aes(color = teams, fill = teams), width = 0.5) +
scale_color_nfl(type = "secondary") +
scale_fill_nfl(alpha = 0.4) +
scale_x_nfl() +
theme_minimal() +
# theme_*_nfl requires gridtext version > 0.1.4
theme_x_nfl()
# use logos for y-axis
ggplot(df, aes(y = teams, x = random_value)) +
geom_col(aes(color = teams, fill = teams), width = 0.5) +
scale_color_nfl(type = "secondary") +
scale_fill_nfl(alpha = 0.4) +
scale_y_nfl() +
theme_minimal() +
# theme_*_nfl requires gridtext version > 0.1.4
theme_y_nfl()
}
#############################################################################
# Headshot Examples
#############################################################################
library(nflplotR)
library(ggplot2)
# Silence an nflreadr message that is irrelevant here
old <- options(nflreadr.cache_warning = FALSE)
dfh <- data.frame(
random_value = runif(9, 0, 1),
player_gsis = c("00-0033873",
"00-0026498",
"00-0035228",
"00-0031237",
"00-0036355",
"00-0019596",
"00-0033077",
"00-0012345",
"00-0031280")
)
if (utils::packageVersion("gridtext") > "0.1.4" && FALSE){
# use headshots for x-axis
ggplot(dfh, aes(x = player_gsis, y = random_value)) +
geom_col(width = 0.5) +
scale_x_nfl_headshots() +
theme_minimal() +
# theme_*_nfl requires gridtext version > 0.1.4
theme_x_nfl()
# use headshots for y-axis
ggplot(dfh, aes(y = player_gsis, x = random_value)) +
geom_col(width = 0.5) +
scale_y_nfl_headshots() +
theme_minimal() +
# theme_*_nfl requires gridtext version > 0.1.4
theme_y_nfl()
}
# Restore old options
options(old)