# Load data from Python
aggression_trends2 <- reticulate::py$aggression_trends
# Clean data
aggression_trends2 <- aggression_trends2[!is.na(aggression_trends2$year), ]
aggression_trends2$year <- as.numeric(aggression_trends2$year)
# Plot
ggplot(aggression_trends2, aes(x = year, y = mean_aggression, color = speaker)) +
geom_line(size = 1.2) +
geom_point(size = 2) +
geom_ribbon(aes(ymin = ci_lower, ymax = ci_upper, fill = speaker), alpha = 0.2, color = NA) +
labs(
title = "Aggression Rating Over Time by Speaker",
x = "Year",
y = "Mean Aggression Rating"
) +
theme_minimal() +
scale_x_continuous(
breaks = unique(na.omit(as.numeric(aggression_trends2$year)))
) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
geom_hline(yintercept = 0, linetype = "dashed")