画多个系列折线图,并添加平均值折线

2018-05-08  本文已影响0人  阳阳_e5f8

【目的】想用R画多个系列数据的折线图,并有一条代表性的折线(如平均值折线)。

【效果】


image

参考:Plotting individual observations and group means with ggplot2 | R-bloggers


#### Test of plot line group ####
install.packages("devtools")
devtools::install_github("drsimonj/ourworldindata")

# Individual-observations data
library(ourworldindata)
library(tidyr)
library(dplyr)
library(ggplot2)
head(financing_healthcare)
id <- financing_healthcare %>% 
  filter(continent %in% c("Oceania", "Europe") & between(year, 2001, 2005)) %>% 
  select(continent, country, year, health_exp_total) %>% 
  na.omit() # 筛选2001-2005年两个continent的health_exp_total数据
id
# 画多个系列折线图
ggplot(id, aes(x = year, y = health_exp_total, group = country,color = continent)) +
  geom_line()

gd <- id %>% 
  group_by(continent,year) %>% 
  summarise(health_exp_total = mean(health_exp_total))  # 按continent统计平均值
gd

# 加入平均值折线,注意与上面的不同
ggplot(id, aes(x = year, y = health_exp_total,  color = continent)) +
  geom_line(aes(group = country)) + # 所有系列折线,注意要在此加入group信息
  geom_line(data = gd) # 平均值折线

# 设置平均值折线的粗细和透明度,使其凸现出来
ggplot(id, aes(x = year, y = health_exp_total, color = continent)) +
  geom_line(aes(group = country), alpha = .3) +  # 所有折线的透明度
  geom_line(data = gd, alpha = .8, size = 3) +   # 平均值折线的透明度和粗细
  theme_bw() +
  labs(
    title = "Changes in healthcare spending\nacross countries and world regions",
    x = NULL,
    y = "Total healthcare investment ($)",
    color = NULL
  )
##### 用自己数据作图 #####
> h12.m
# A tibble: 179,676 x 7
   Gene.ID   Cat   group     group2    material time  log2_normalized_counts
   <fct>     <chr> <fct>     <fct>     <chr>    <chr>                  <dbl>
 1 AT1G01010 Cat.7 NA        NA        hid1     12on                    2.93
 2 AT1G01020 Cat.7 NA        NA        hid1     12on                    3.17
 3 AT1G01030 Cat.5 phyB_only phyB_down hid1     12on                    1.11
 4 AT1G01040 Cat.7 NA        NA        hid1     12on                    6.24
 5 AT1G01046 Cat.7 NA        NA        hid1     12on                   -2.89
 6 AT1G01050 Cat.7 NA        NA        hid1     12on                    4.94
 7 AT1G01060 Cat.7 NA        NA        hid1     12on                    4.54
 8 AT1G01070 Cat.9 NA        NA        hid1     12on                   NA   
 9 AT1G01080 Cat.7 NA        NA        hid1     12on                    4.58
10 AT1G01090 Cat.9 NA        NA        hid1     12on                    5.86
# ... with 179,666 more rows

# 筛选在12ON时间点co_up且隶属于Cat1基因,并计算平均值
h12.up1 <- h12.m %>% 
  filter(Cat == "Cat.1" & group2 == "co_up" & material =="WT") 
h12.coup1 <- h12.m %>% 
  filter(Cat == "Cat.1" & group2 == "co_up") %>% 
  group_by(Cat,material,time) %>% 
  summarise(log2_normalized_counts=mean(log2_normalized_counts, na.rm = T))

##### 数据如下所示:#####
> h12.up1
# A tibble: 27 x 7
   Gene.ID   Cat   group  group2 material time  log2_normalized_counts
   <fct>     <chr> <fct>  <fct>  <chr>    <chr>                  <dbl>
 1 AT1G28670 Cat.1 common co_up  WT       12on                  0.566 
 2 AT2G28200 Cat.1 common co_up  WT       12on                 -1.94  
 3 AT3G06435 Cat.1 common co_up  WT       12on                  0.0694
 4 AT3G13404 Cat.1 common co_up  WT       12on                 -0.344 
 5 AT3G23430 Cat.1 common co_up  WT       12on                  1.14  
 6 AT3G28180 Cat.1 common co_up  WT       12on                  1.80  
 7 AT3G52470 Cat.1 common co_up  WT       12on                  1.47  
 8 AT5G14930 Cat.1 common co_up  WT       12on                 -0.995 
 9 AT5G46710 Cat.1 common co_up  WT       12on                 -2.26  
10 AT1G28670 Cat.1 common co_up  WT       24on                  4.94  
# ... with 17 more rows
> h12.coup1
# A tibble: 9 x 4
# Groups:   Cat, material [?]
  Cat   material time  log2_normalized_counts
  <chr> <chr>    <chr>                  <dbl>
1 Cat.1 hid1     12on                  1.49  
2 Cat.1 hid1     24on                  3.56  
3 Cat.1 hid1     48on                  3.57  
4 Cat.1 phyB     12on                  2.21  
5 Cat.1 phyB     24on                  0.466 
6 Cat.1 phyB     48on                 -1.54  
7 Cat.1 WT       12on                 -0.0547
8 Cat.1 WT       24on                  3.18  
9 Cat.1 WT       48on                  4.64

##### 作图并保存图像 #####
ggplot(h12.up1, aes(x=time, y=log2_normalized_counts, color=material))+
  geom_line(aes(group=Gene.ID), alpha=.4,linetype= 2)+
  geom_line(data = h12.coup1, aes(group=material), alpha=1,size=1.5)+ #要加入group=material
  scale_x_discrete(labels=c("12hr","24hr","48hr")) + # change x-grid labels
  xlab("Time") + ylab(expression(paste("log"[2],"(CPM)"))) + # change x-axis labels
  theme_bw()
ggsave("Cat1_12hr_co_up.png", width =10, height = 8,units = "cm", dpi=300)
  
上一篇下一篇

猜你喜欢

热点阅读