Use continuous trajectories with election endpoints
This commit is contained in:
@@ -28,10 +28,10 @@ dir.create(figure_dir, recursive = TRUE, showWarnings = FALSE)
|
||||
panel <- read.csv(panel_file, check.names = FALSE)
|
||||
|
||||
trajectory_spec <- data.frame(
|
||||
party_id = c(1691, 379, 432),
|
||||
series = c("Fidesz", "Danish Social Democrats", "US Democrats"),
|
||||
start_year = c(1990, 2007, 1944),
|
||||
end_year = c(2022, 2019, 2020)
|
||||
party_id = c(1691, 432, 1375),
|
||||
series = c("Fidesz", "US Democrats", "CDU"),
|
||||
start_year = c(1990, 1988, 2002),
|
||||
end_year = c(2022, 2020, 2025)
|
||||
)
|
||||
|
||||
trajectory_rows <- lapply(seq_len(nrow(trajectory_spec)), function(i) {
|
||||
@@ -48,6 +48,8 @@ trajectory_rows <- lapply(seq_len(nrow(trajectory_spec)), function(i) {
|
||||
d[order(d$year), ]
|
||||
})
|
||||
trajectories <- do.call(rbind, trajectory_rows)
|
||||
trajectory_levels <- trajectory_spec$series
|
||||
trajectories$series <- factor(trajectories$series, levels = trajectory_levels)
|
||||
|
||||
plot_columns <- c(
|
||||
"party_id", "party_name_english", "country", "year", "series",
|
||||
@@ -67,25 +69,22 @@ labelled <- plot_data[plot_data$is_labelled, ]
|
||||
label_positions <- data.frame(
|
||||
label = c(
|
||||
"Fidesz 1990", "Fidesz 2022",
|
||||
"Danish Social Democrats 2007", "Danish Social Democrats 2019",
|
||||
"US Democrats 1944", "US Democrats 2020"
|
||||
"US Democrats 1988", "US Democrats 2020",
|
||||
"CDU 2002", "CDU 2025"
|
||||
),
|
||||
plot_label = c(
|
||||
"Fidesz\n1990", "Fidesz\n2022",
|
||||
"Danish Social Democrats\n2007", "Danish Social Democrats\n2019",
|
||||
"US Democrats\n1944", "US Democrats\n2020"
|
||||
"US Democrats\n1988", "US Democrats\n2020",
|
||||
"CDU\n2002", "CDU\n2025"
|
||||
),
|
||||
label_x = c(.84, .36, .12, .33, .73, .36),
|
||||
label_y = c(.36, .93, .32, .49, .33, .27)
|
||||
label_x = c(.84, .36, .48, .35, .53, .72),
|
||||
label_y = c(.36, .93, .47, .27, .66, .57)
|
||||
)
|
||||
labelled <- merge(labelled, label_positions, by = "label", all.x = TRUE, sort = FALSE)
|
||||
if (anyNA(labelled$label_x) || anyNA(labelled$label_y)) {
|
||||
stop("Missing manual label position for a displayed scale example")
|
||||
}
|
||||
|
||||
trajectory_levels <- trajectory_spec$series
|
||||
trajectories$series <- factor(trajectories$series, levels = trajectory_levels)
|
||||
|
||||
p <- ggplot() +
|
||||
geom_path(
|
||||
data = trajectories,
|
||||
@@ -93,11 +92,6 @@ p <- ggplot() +
|
||||
linewidth = .85,
|
||||
arrow = grid::arrow(type = "closed", length = grid::unit(.065, "inches"))
|
||||
) +
|
||||
geom_point(
|
||||
data = trajectories,
|
||||
aes(x = economic_lr, y = galtan, colour = series, shape = series),
|
||||
size = 1.4
|
||||
) +
|
||||
geom_errorbar(
|
||||
data = labelled,
|
||||
aes(x = economic_lr, ymin = galtan_q025, ymax = galtan_q975, colour = series),
|
||||
@@ -124,13 +118,16 @@ p <- ggplot() +
|
||||
size = 2.6, lineheight = .9
|
||||
) +
|
||||
scale_linetype_manual(
|
||||
values = c("Fidesz" = "solid", "Danish Social Democrats" = "dashed", "US Democrats" = "dotdash")
|
||||
values = c("Fidesz" = "solid", "US Democrats" = "dotdash", "CDU" = "dashed"),
|
||||
breaks = trajectory_levels
|
||||
) +
|
||||
scale_colour_manual(
|
||||
values = c("Fidesz" = "#D55E00", "Danish Social Democrats" = "#009E73", "US Democrats" = "#0072B2")
|
||||
values = c("Fidesz" = "#D55E00", "US Democrats" = "#0072B2", "CDU" = "#009E73"),
|
||||
breaks = trajectory_levels
|
||||
) +
|
||||
scale_shape_manual(
|
||||
values = c("Fidesz" = 16, "Danish Social Democrats" = 17, "US Democrats" = 15)
|
||||
values = c("Fidesz" = 16, "US Democrats" = 15, "CDU" = 17),
|
||||
breaks = trajectory_levels
|
||||
) +
|
||||
scale_x_continuous(limits = c(0, 1), breaks = c(0, .25, .5, .75, 1)) +
|
||||
scale_y_continuous(limits = c(0, 1), breaks = c(0, .25, .5, .75, 1)) +
|
||||
|
||||
Reference in New Issue
Block a user