Добавление меток к линейному графику с помощью ggplot2

#r #ggplot2 #time-series #linechart

#r #ggplot2 #временные ряды #линейная диаграмма

Вопрос:

Я пытаюсь добавить что-то вроде легенды справа, которая указывает имя переменной. Во фрейме данных строки представляют собой столбцы с именами «Расходы на исправление» или «Расходы на медицинскую помощь», и я хочу, чтобы они были показаны. Может кто-нибудь помочь, пожалуйста?

Вот мой график: введите описание изображения здесь

Вот мой код:

 ggplot(Alabama, aes(x=AlYear))   
  geom_line(aes(y = AlMed), color = "darkred")   
  geom_line(aes(y = AlCorr), color="steelblue", linetype="twodash")  
  labs(title='Figure 3: Alabama Social Spending',
        x='Fiscal Year', y= 'Spending (in $100,000')
 

Ответ №1:

Это связано с тем, что тип расходов (Coor или Med) на самом деле является переменной, которую вы хотите сопоставить с color эстетикой. Итак, вы должны сначала pivot_longer() данные, чтобы сохранить их в столбце, затем вы должны включить его в качестве переменной внутри aes() . Наконец, поскольку цвет теперь является переменной, вы можете установить значения вручную в соответствующем масштабе.

 library(tidyverse)
Alabama <- tibble(AlYear = 2010:2015,
                  AlMed = c(300,400,600,650,700,750),
                  AlCorr = c(400,400,450,500,450,450))

Alabama %>%
  pivot_longer(AlMed:AlCorr, names_to = "Spending Type") %>%
  ggplot(aes(x=AlYear, y = value, color= `Spending Type`))   
  geom_line()   
  labs(title='Figure 3: Alabama Social Spending',
       x='Fiscal Year', y= 'Spending (in $100,000')  
  scale_color_manual(values=c("darkred", "steelblue"),
                     labels = c("Medicaid Spending","Correctional Spending"))
 

Создано 2020-12-09 пакетом reprex (версия 0.3.0)

Конечно, вы можете сделать то же самое для типа линии (добавить его в aes() вызов и добавить a scale_linetype_manual() в конце).