Right now the legend has a total of 4 rows. I would like the legend to only have two rows, with the top row being the circle indicating the logger data (circles) and the bottom row being the various symbols (instant data). However I want the legend item on the top to be the color matching (same site) as to the one below.
Data
sep_sonde_do <- structure(list(station_name = c("TMDL-Est", "TMDL-R1", "TMDL-R2",
"TMDL-R3", "TMDL-SA", "TMDL-CL", "TMDL-Est", "TMDL-R1", "TMDL-R2",
"TMDL-R3", "TMDL-SA", "TMDL-CL", "TMDL-Est", "TMDL-R1", "TMDL-R2",
"TMDL-R3", "TMDL-SA", "TMDL-CL", "TMDL-Est", "TMDL-R1", "TMDL-R2",
"TMDL-R3", "TMDL-SA", "TMDL-CL", "TMDL-Est", "TMDL-R1", "TMDL-R2",
"TMDL-R3", "TMDL-SA", "TMDL-CL"), sample_date_time = c("2023-09-15 11:00:00",
"2023-09-15 11:00:00", "2023-09-15 11:00:00", "2023-09-15 11:00:00",
"2023-09-15 11:00:00", "2023-09-15 11:00:00", "2023-09-15 11:15:00",
"2023-09-15 11:15:00", "2023-09-15 11:15:00", "2023-09-15 11:15:00",
"2023-09-15 11:15:00", "2023-09-15 11:15:00", "2023-09-15 11:30:00",
"2023-09-15 11:30:00", "2023-09-15 11:30:00", "2023-09-15 11:30:00",
"2023-09-15 11:30:00", "2023-09-15 11:30:00", "2023-09-15 11:45:00",
"2023-09-15 11:45:00", "2023-09-15 11:45:00", "2023-09-15 11:45:00",
"2023-09-15 11:45:00", "2023-09-15 11:45:00", "2023-09-15 12:00:00",
"2023-09-15 12:00:00", "2023-09-15 12:00:00", "2023-09-15 12:00:00",
"2023-09-15 12:00:00", "2023-09-15 12:00:00"), parameter = c("Dissolved Oxygen",
"Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen",
"Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen",
"Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen",
"Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen",
"Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen",
"Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen",
"Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen",
"Dissolved Oxygen"), result = c(17.28, 10.18, 8.71, 8.71, 8.95,
8.61, 16.72, 10.03, 8.55, 8.55, 8.53, 8.41, 16.48, 9.84, 8.4,
8.38, 8.17, 8.21, 16.92, 9.72, 8.25, 8.3, 7.85, 8.03, 16.74,
9.57, 8.05, 8.21, 7.55, 7.85), units = c("mg/L", "mg/L", "mg/L",
"mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L",
"mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L",
"mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L",
"mg/L", "mg/L", "mg/L"), comments = c(NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA), date = c("2023-09-15", "2023-09-15",
"2023-09-15", "2023-09-15", "2023-09-15", "2023-09-15", "2023-09-15",
"2023-09-15", "2023-09-15", "2023-09-15", "2023-09-15", "2023-09-15",
"2023-09-15", "2023-09-15", "2023-09-15", "2023-09-15", "2023-09-15",
"2023-09-15", "2023-09-15", "2023-09-15", "2023-09-15", "2023-09-15",
"2023-09-15", "2023-09-15", "2023-09-15", "2023-09-15", "2023-09-15",
"2023-09-15", "2023-09-15", "2023-09-15"), ym = c("2023-09",
"2023-09", "2023-09", "2023-09", "2023-09", "2023-09", "2023-09",
"2023-09", "2023-09", "2023-09", "2023-09", "2023-09", "2023-09",
"2023-09", "2023-09", "2023-09", "2023-09", "2023-09", "2023-09",
"2023-09", "2023-09", "2023-09", "2023-09", "2023-09", "2023-09",
"2023-09", "2023-09", "2023-09", "2023-09", "2023-09")), row.names = c(NA,
30L), class = "data.frame")
sep_sonde_do_situ <- structure(list(station_name = c("Instant TMDL-R1", "Instant TMDL-R1",
"Instant TMDL-R1", "Instant TMDL-R2", "Instant TMDL-R2", "Instant TMDL-R2",
"Instant TMDL-R3", "Instant TMDL-R3", "Instant TMDL-R3", "Instant TMDL-R4",
"Instant TMDL-R4", "Instant TMDL-R4", "Instant TMDL-R4", "Instant TMDL-SA",
"Instant TMDL-SA", "Instant TMDL-SA", "Instant TMDL-CL", "Instant TMDL-CL",
"Instant TMDL-CL"), sample_date_time = c("2023-09-15 05:51:00",
"2023-09-22 03:29:00", "2023-09-29 05:09:00", "2023-09-15 05:13:00",
"2023-09-22 03:07:00", "2023-09-29 04:43:00", "2023-09-15 04:35:00",
"2023-09-22 02:42:00", "2023-09-29 04:09:00", "2023-09-15 03:45:00",
"2023-09-29 03:35:00", "2023-10-06 04:21:00", "2023-10-13 03:40:00",
"2023-09-15 03:15:00", "2023-09-22 02:08:00", "2023-09-29 03:22:00",
"2023-09-15 02:45:00", "2023-09-22 01:30:00", "2023-09-29 02:49:00"
), parameter = c("Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen",
"Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen",
"Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen",
"Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen",
"Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen", "Dissolved Oxygen"
), result = c(9.45, 9.32, 8.86, 10.11, 10.46, 10.81, 8.86, 9.22,
9.19, 7.02, 6.05, 7.96, 8.05, 9.28, 9.8, 9.48, 9.35, 10.1, 9.37
), units = c("mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L",
"mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L", "mg/L",
"mg/L", "mg/L", "mg/L", "mg/L", "mg/L"), date = c("2023-09-15",
"2023-09-22", "2023-09-29", "2023-09-15", "2023-09-22", "2023-09-29",
"2023-09-15", "2023-09-22", "2023-09-29", "2023-09-15", "2023-09-29",
"2023-10-06", "2023-10-13", "2023-09-15", "2023-09-22", "2023-09-29",
"2023-09-15", "2023-09-22", "2023-09-29"), ym = c("2023-09",
"2023-09", "2023-09", "2023-09", "2023-09", "2023-09", "2023-09",
"2023-09", "2023-09", "2023-09", "2023-09", "2023-10", "2023-10",
"2023-09", "2023-09", "2023-09", "2023-09", "2023-09", "2023-09"
)), row.names = c(NA, -19L), class = "data.frame")
Code
sonde_axis_do <- sep_sonde_do %>%
select(date) %>%
arrange() %>%
unique()
annotation_do_sonde <- data.frame(
x = c("2023-10-10"),
y = c(7.5),
label = c("Numeric Target Minimum DO = 7 mg/L")
)
ggplot() +
geom_point(
data = sep_sonde_do, aes(
x = sample_date_time,
y = result, color = station_name,
group = station_name
),
size = 0.8, alpha = 0.6
) +
geom_point(data = sep_sonde_do_situ, aes(
x = sample_date_time, y = result, fill = station_name,
shape = station_name,
group = station_name
), size = 3) +
geom_point(
data = sep_sonde_do_situ, aes(
x = sample_date_time, y = result,
shape = station_name,
group = station_name
), size = 3,
color = "black", alpha = 1
) +
geom_hline(yintercept = c(7), linetype = "solid", color = "black", size = 0.7) +
geom_text(
data = annotation_do_sonde, aes(x = x, y = y, label = label),
size = 1.2, size.unit = "mm"
) +
scale_y_continuous(
limits = c(0, 22), breaks = seq(0, 22, by = 2),
expand = c(0, 0)
) +
scale_x_discrete(
breaks = unique(sep_sonde_do$date),
labels = unique(sep_sonde_do$date),
expand = c(0.04, 0.04)
) +
scale_shape_manual(values = 20:26) +
scale_color_viridis(
labels = (x) paste0(x, "<span style='color: transparent'> Instant</span>"),
discrete = TRUE, name = NULL,
guide = guide_legend(order = 2, override.aes = list(size = 3))
) +
scale_fill_viridis_d() +
labs(title = "September 2023 - Dissolved Oxygen", y = "Dissolved Oxygen (mg/L)") +
theme_classic() +
theme(
plot.title = element_text(hjust = 0.5),
axis.title.x = element_blank(),
legend.position = "bottom",
legend.box = "vertical",
legend.direction = "horizontal",
legend.margin = margin(),
axis.text.x = element_text(angle = 45, hjust = 1),
legend.title = element_blank(),
legend.text = ggtext::element_markdown(size = 6.7),
legend.key.width = unit(0.15, 'cm')
)