Вам лучше создать отдельный набор данных, приспособленный к вашим потребностям графика, который будет в длинном формате, так что вы можете дать одну инструкцию geom_line()
и добавить цвета в строки с aes(color = ...)
в пределах позвоните на geom_line()
. Вот пример с набором данных midwest
(для примера рассмотрим их как отдельные наборы данных)
library(ggplot2)
library(dplyr)
library(tidyr)
long_midwest <- midwest %>%
select(popwhite, popasian, PID, poptotal) %>%
gather(key = "variable", value = "value", -PID, -poptotal) # convert to long format
long_midwest2 <- midwest %>%
select(poptotal, perchsd, PID) %>%
gather(key = "variable", value = "value", -PID, -poptotal)
plot_data <- bind_rows(long_midwest, long_midwest2) %>% # bind datasets vertically
mutate(line_type = ifelse(variable == 'perchsd', 'A', 'B')) # creates a line_type variable
ggplot(data = plot_data, aes(x=poptotal, y = value))+
geom_line(aes(color = variable, linetype = line_type)) +
scale_color_manual(
values = c('lightskyblue', 'gold1', 'blue'),
name = "My color legend"
) +
scale_linetype_manual(
values = c(3, 1), # play with the numbers to get the correct styling
name = "My linetype legend"
)
Я добавил line_type
переменная для отображения наиболее общего c случая, когда вы хотите указать c отображение между значениями столбца и типом строки. Если это то же самое, что, скажем, variable
, просто используйте aes(color = variable, linetype = variable)
. Затем вы можете решить, какой тип линии вы хотите ( см. Здесь для получения более подробной информации ).
Для настройки меток просто измените содержимое variable
в наборе данных на нужные значения.