The goal of {soccerplotR}
is to provide functions and geoms that help
visualization of professional soccer analysis. It provides a {ggplot2}
geom that does the heavy lifting of plotting soccer team logos in high
quality, with correct aspect ratio and possible transparency. All of
this is done by the powerful ggpath
package.
To get a bug fix or to use a feature from the development version, you
can install the development version of {soccerplotR}
from
GitHub with:
if (!require("pak")) install.packages("pak")
pak::pak("tonyelhabr/soccerplotR")
Using all_valid_team_names
, geom_soccer_logos
, and
scale_fill_soccer(color = "primary")
.
library(soccerplotR)
library(ggplot2)
library(showtext)
FONT <- "Kanit"
sysfonts::font_add_google(FONT)
showtext::showtext_auto()
showtext::showtext_opts(dpi = 300)
team_names <- unlist(unname(all_valid_team_names()))
set.seed(42)
sampled_team_names <- sample(team_names, size = 45)
df <- data.frame(
a = rep(1:5, 9),
b = sort(rep(0:8, 5), decreasing = TRUE),
team_name = sampled_team_names
)
ggplot(df) +
aes(
x = a,
y = b
) +
geom_soccer_logos(
aes(
team_name = team_name
),
width = 0.075
) +
geom_label(
aes(
label = team_name,
fill = team_name
),
color = "white",
family = FONT,
size = 10 / .pt,
nudge_y = -0.5
) +
scale_fill_soccer(type = "primary") +
theme_void() +
theme(
plot.margin = margin(25, 25, 25, 25, "pt"),
plot.title.position = "plot",
plot.title = element_text(family = FONT, size = 18, hjust = 0.5)
) +
coord_cartesian(clip = "off") +
labs(
title = "A random sample of 45 teams"
)
Using valid_team_names
, scale_color_soccer(color = "secondary")
, and
scale_fill_soccer(color = "primary")
.
team_names <- valid_team_names("ENG")
df <- data.frame(
a = rep(1:5, 9),
b = sort(rep(0:8, 5), decreasing = TRUE),
team_name = c(team_names, NA)
)
ggplot(df, aes(x = a, y = b)) +
geom_point(
aes(
color = team_name,
fill = team_name
),
shape = 21,
size = 12,
stroke = 3
) +
geom_text(
aes(
label = team_name
),
color = "black",
family = FONT,
size = 10 / .pt,
nudge_y = -0.5
) +
scale_color_soccer(type = "secondary") +
scale_fill_soccer(type = "primary", alpha = 0.8) +
theme_void() +
theme(
plot.margin = margin(25, 25, 25, 25, "pt"),
plot.title.position = "plot",
plot.title = element_text(family = FONT, size = 18, hjust = 0.5)
) +
coord_cartesian(clip = "off") +
labs(
title = "English teams in {soccerplotR}"
)