Попробуйте это. Чтобы получить правильные цвета и легенду, вы должны использовать scale_color_manual
. Использование color = "blue"
внутри aes()
не изменит цвет на «синий». Вместо этого «синий» - это просто своего рода метка, которой вы должны назначить цвет внутри scale_color_manual. Также. Чтобы получить правильные метки, необходимо установить метки.
Второй подход для достижения желаемого графика - это привести ваш df в формат, например, tidyr::pivot_longer
. Таким образом, необходим только один слой geom_line
, и вы автоматически получите правильные метки.
library(ggplot2)
library(tidyr)
library(dplyr)
set.seed(123)
summary_5yr <- data.frame(
Year = 2010:2020,
NY_Med_Inc = runif(11, 10000, 50000),
FL_Med_Inc = runif(11, 10000, 50000),
WA_Med_Inc = runif(11, 10000, 50000)
)
ggplot(summary_5yr) +
geom_line(aes(x = Year, y = NY_Med_Inc, group = 1, color ="blue")) +
geom_line(aes(x = Year, y = FL_Med_Inc, group = 1, color = "red")) +
geom_line(aes(x = Year, y = WA_Med_Inc, group = 1, color = "green")) +
scale_color_manual(values = c(blue = "blue", red = "red", green = "green"),
labels = c(blue = "NY_Med_Inc", red = "FL_Med_Inc", green = "WA_Med_Inc")) +
labs(title = "Median Income Trends", x = "Year", y = "Median Income (USD)")
summary_5yr %>%
tidyr::pivot_longer(-Year, names_to = "var", values_to = "value") %>%
ggplot() +
geom_line(aes(x = Year, y = value, group = var, color = var)) +
scale_color_manual(values = c(NY_Med_Inc = "blue", FL_Med_Inc = "red", WA_Med_Inc = "green")) +
labs(title = "Median Income Trends", x = "Year", y = "Median Income (USD)")