# Load necessary library
library(ggplot2)
# Data setup
data <- data.frame(
Date = as.Date(c("2024-10-30", "2024-09-01", "2024-08-01", "2024-07-01", "2023-12-14", "2023-07-23",
"2023-05-31", "2021-03-13")),
ALP = c(41, 39, 37, 39, 44, 32, 52, 59.9),
LIB = c(34, 32, 29, 33, 29, 37, 28, 21.3),
NAT = c(4, 6, 3, 5, 4, 6, 5, 4),
GRN = c(12, 11, 12, 12, 11, 10, 8, 6.9),
ONP = c(NA, NA, 4, 2, 3, NA, NA, 1.3),
OTH = c(9, 12, 15, 9, 9, 15, 7, 6.6)
)
# Convert data to long format manually
data_long <- data.frame(
Date = rep(data$Date, 6),
Party = rep(c("ALP", "LIB", "NAT", "GRN", "ONP", "OTH"), each = nrow(data)),
Vote = c(data$ALP, data$LIB, data$NAT, data$GRN, data$ONP, data$OTH)
)
# Remove rows with missing values
data_long <- data_long[!is.na(data_long$Vote), ]
# Plot
ggplot(data_long, aes(x = Date, y = Vote, color = Party)) +
geom_point() +
geom_smooth(method = "loess", se = FALSE) +
scale_color_manual(values = c("ALP" = "red", "LIB" = "blue", "NAT" = "darkgreen",
"GRN" = "green", "ONP" = "orange", "OTH" = "grey")) +
labs(title = "2025 Western Australia State Election Primary Vote Opinion Polling",
x = "Date",
y = "Primary Vote (%)",
color = "Party") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))