1

I am new R user. I tried to add legend of mean data of df_summary1 and df_summary2 with title "RCP4.5" and "RCP8.5" in my ggplot but fail. Can any one help me on this. Thanks in advance.

ggplot()+
geom_line(data=df_tidy1, aes(x=date, y=Ratio, group=Cell), color="grey") +
geom_line(data=df_tidy2, aes(x=date, y=Ratio, group=Cell), color="grey")+
geom_line(data = df_summary1, aes(x = date, y=mean), color = "red") +
geom_line(data = df_summary2, aes(x = date, y=mean), color = "blue")+
geom_ribbon(data =df_summary1, aes(x= date, ymin=CI_lower, ymax=CI_upper)    ,fill="blue", alpha=0.2)+ 
geom_ribbon(data =df_summary2,aes(x= date, ymin=CI_lower, ymax=CI_upper) ,fill="grey", alpha=0.2)+ 
xlab("data") +  ylab("Average temperature")

Here is the graph enter image description here

the df_tidy1 look like:

data.frame(stringsAsFactors=FALSE,
        date = c("1980-01-01", "1981-01-01", "1982-01-01", "1983-01-01",
                 "1984-01-01", "1985-01-01"),
        Cell = c("Acsess.4.5", "Acsess.4.5", "Acsess.4.5", "Acsess.4.5",
                 "Acsess.4.5", "Acsess.4.5"),
       Ratio = c(29.8715846994536, 29.5917808219178, 29.7479452054795,
                 30.2602739726027, 29.266393442623, 29.5342465753425)
)

the df_summary look like

 data.frame(
        date = c("1980-01-01", "1981-01-01", "1982-01-01", "1983-01-01",
                 "1984-01-01", "1985-01-01"),
           n = c("5", "5", "5", "5", "5", "5"),
        mean = c("29.8715846994536", "29.5917808219178", "29.7479452054795",
                 "30.2602739726027", "29.266393442623", "29.5342465753425"),
          sd = c("0", "0", "0", "0", "0", "0"),
         sem = c("0", "0", "0", "0", "0", "0"),
    CI_lower = c("29.8715846994536", "29.5917808219178", "29.7479452054795",
                 "30.2602739726027", "29.266393442623", "29.5342465753425"),
    CI_upper = c("29.8715846994536", "29.5917808219178", "29.7479452054795",
                 "30.2602739726027", "29.266393442623", "29.5342465753425")
)
Richard Telford
  • 9,558
  • 6
  • 38
  • 51
Trang Pham
  • 13
  • 4
  • Welcome to Stack Overflow! Could you make your problem reproducible by sharing a sample of your data so others can help (please do not use `str()`, `head()` or screenshot)? You can use the [`reprex`](https://reprex.tidyverse.org/articles/articles/magic-reprex.html) and [`datapasta`](https://cran.r-project.org/web/packages/datapasta/vignettes/how-to-datapasta.html) packages to assist you with that. See also [Help me Help you](https://speakerdeck.com/jennybc/reprex-help-me-help-you?slide=5) & [How to make a great R reproducible example?](https://stackoverflow.com/q/5963269) – Tung Nov 16 '18 at 04:35
  • yes I already change some but not sure it correct. Thanks for your comment – Trang Pham Nov 16 '18 at 07:45
  • use bind_rows to combine tidy1 & tidy2 into a single dataframe and then plot with a single call to geom_line. – Richard Telford Nov 16 '18 at 08:48

1 Answers1

0

You didn't provide df_tidy2 and df_summary2 but this should give you a good start

library(tidyverse)

ggplot() +
  geom_line(data = df_tidy1, aes(x = date, y = Ratio, group = Cell), color = "grey") +
  # geom_line(data = df_tidy2, aes(x = date, y = Ratio, group = Cell), color = "grey") +
  geom_line(data = df_summary1, aes(x = date, y = mean, color = "RCP4.5")) +
  # geom_line(data = df_summary2, aes(x = date, y = mean, color = "blue")) +
  geom_ribbon(data = df_summary1, aes(x = date, ymin = CI_lower, ymax = CI_upper), 
              fill = "blue", alpha = 0.2) +
  # geom_ribbon(data = df_summary2, aes(x = date, ymin = CI_lower, ymax = CI_upper), fill = "grey", alpha = 0.2) +
  xlab("Date") + 
  ylab("Average temperature") +
  scale_color_manual("Legend", values = c("blue")) +
  scale_x_date(expand = c(0, 0), date_breaks = '18 months', date_labels = "%b-%Y") +
  theme_classic(base_size = 14)

Created on 2018-11-16 by the reprex package (v0.2.1.9000)

Tung
  • 26,371
  • 7
  • 91
  • 115