Search code examples
rggplot2area-chart

print legends to area chart with ggplot2


I am trying to add the legends in my area chart but I have problems and I can't position them to the right of the chart, this is my code and this is my data data

library(ggplot2)

df <- read.csv("/home/pronostico_gas.csv")
gas <- as.data.frame(df[, 1:3])

ggplot(gas) +
  geom_area(aes(x = año, y = qg),
            colour = "#E2E418", fill = "#E2E418", alpha = 0.7, show.legend = TRUE) +
  geom_line(aes(x = año, y = np),
            colour = "#C5B21D", size=1, linetype = "dashed", show.legend = TRUE) +
  scale_x_continuous(breaks = gas$año) +
  scale_y_continuous(breaks = seq(0, 250, 40)) +
  labs(title = "Title", x = "año", y = "qo") +
  theme_classic() + 
  theme(plot.title = element_text(hjust = 0.5))

enter image description here


Solution

  • In the absence of reproducible data, this may be a help. Place the aesthetics you want to appear in the legend within the call to aes and control the appearance with scale_?_manual.

    library(ggplot2)
    #> Warning: package 'ggplot2' was built under R version 4.2.3
    
    
    gas <- data.frame(año = 2019:2042,
                      qg = runif(24, 0, 9))
    
    gas$np = cumsum(gas$qg)
    
    ggplot(gas) +
      geom_area(aes(x = año, y = qg, fill = "qg"),
                colour = "#E2E418", alpha = 0.7) +
      geom_line(aes(x = año, y = np, colour = "np"),
                linewidth=1, linetype = "dashed")+
      scale_colour_manual(values = "#C5B21D")+
      scale_fill_manual(values = "#E2E418")+
      guides(colour = guide_legend(override.aes = list(fill = "white"))) +
      scale_x_continuous(breaks = gas$año) +
      scale_y_continuous(breaks = seq(0, 250, 40)) +
      labs(title = "Title", 
           x = "año", 
           y = "qo",
           colour = "Colour",
           fill = "Fill") +
      theme_classic() + 
      theme(plot.title = element_text(hjust = 0.5),
            axis.text.x = element_text(size = 6),
            legend.position = "right")
    

    Created on 2023-06-21 with reprex v2.0.2