1.EAPC的计算

数据要求

计算的国家需要有1990-2019年期间每一年的标准率

计算原理

EAPC的前提是假设在观察的整个期间,每年的变化持续稳定。 计算方法:以年份为自变量;对死亡率(发生率)进行常用对数转化之后,取各年份的几何均数,以此几何均数数列为因变量,拟合直线,即:Y=b+aX,其中,Y=Lg(死亡率),X为年份,则EAPC=(10a次方-1)*100% 载入相关R包

library(tidyverse)
library(dplyr)

载入数据

data <- read.csv('EC_nation.csv',header = T)
EAPC <- data %>% filter(age=='Age-standardized') %>% 
                 filter(metric== 'Rate') %>% 
                 filter(measure=='Incidence') %>% .[,c(2,7,8)]
head(EAPC)          
课程示例来源            location year        val
课程示例来源 1            Rwanda 1990 18.1869299
课程示例来源 2           Morocco 1990  1.4311735
课程示例来源 3 Equatorial Guinea 1990 11.5443252
课程示例来源 4           Nigeria 1990  0.8669125
课程示例来源 5            Latvia 1990  2.8957074
课程示例来源 6          Zimbabwe 1990 14.7724806

首先以单个国家进行讲解

a <- EAPC %>% filter(location=='China')
head(a)
课程示例来源   location year      val
课程示例来源 1    China 1990 20.96601
课程示例来源 2    China 1991 21.03550
课程示例来源 3    China 1992 20.89134
课程示例来源 4    China 1993 20.86542
课程示例来源 5    China 1994 20.57809
课程示例来源 6    China 1995 20.44211
a$y <- log(a$y)
head(a$y)
课程示例来源 [1] 7.595890 7.596392 7.596894 7.597396 7.597898 7.598399
mod_simp_reg<-lm(y~year,data=a)
summary(mod_simp_reg)
课程示例来源 
课程示例来源 Call:
课程示例来源 lm(formula = y ~ year, data = a)
课程示例来源 
课程示例来源 Residuals:
课程示例来源        Min         1Q     Median         3Q        Max 
课程示例来源 -1.689e-05 -6.452e-06  2.323e-06  7.541e-06  9.294e-06 
课程示例来源 
课程示例来源 Coefficients:
课程示例来源              Estimate Std. Error t value Pr(>|t|)    
课程示例来源 (Intercept) 6.603e+00  3.643e-04   18123   <2e-16 ***
课程示例来源 year        4.989e-04  1.818e-07    2745   <2e-16 ***
课程示例来源 ---
课程示例来源 Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
课程示例来源 
课程示例来源 Residual standard error: 8.617e-06 on 28 degrees of freedom
课程示例来源 Multiple R-squared:      1,   Adjusted R-squared:      1 
课程示例来源 F-statistic: 7.534e+06 on 1 and 28 DF,  p-value: < 2.2e-16
summary(mod_simp_reg)[["coefficients"]]
课程示例来源                 Estimate   Std. Error   t value      Pr(>|t|)
课程示例来源 (Intercept) 6.6031294386 3.643419e-04 18123.443 1.599397e-100
课程示例来源 year        0.0004988831 1.817603e-07  2744.731  1.434434e-77
summary(mod_simp_reg)[["coefficients"]][2,1] ##斜率
课程示例来源 [1] 0.0004988831
summary(mod_simp_reg)[["coefficients"]][2,2] ##斜率的标准误
课程示例来源 [1] 1.817603e-07
## 率的平均变化率
(exp(summary(mod_simp_reg)[["coefficients"]][2,1])-1)*100
课程示例来源 [1] 0.04990076
## 可信区间 mean+-1.96*se
(exp(summary(mod_simp_reg)[["coefficients"]][2,1]-1.96*summary(mod_simp_reg)[["coefficients"]][2,2])-1)*100
课程示例来源 [1] 0.04986511
(exp(summary(mod_simp_reg)[["coefficients"]][2,1]+1.96*summary(mod_simp_reg)[["coefficients"]][2,2])-1)*100
课程示例来源 [1] 0.0499364

建立循环语句计算每个国家的EAPC

EAPC <- data %>% filter(age=='Age-standardized') %>% 
                 filter(metric== 'Rate') %>% 
                 filter(measure=='Incidence') %>% .[,c(2,7,8)]

EAPC_cal <- data.frame(location=unique(EAPC$location),
                      EAPC=rep(0,times=length(unique(EAPC$location))),
                      LCI=rep(0,times=length(unique(EAPC$location))),
                      UCI=rep(0,times=length(unique(EAPC$location))))

for (i in 1:length(unique(EAPC$location))){
  country_cal <- as.character(EAPC_cal[i,1])
  a <- subset(EAPC, EAPC$location==country_cal)
  a$y <- log(a$val)
  mod_simp_reg<-lm(y~year,data=a)
  estimate <- (exp(summary(mod_simp_reg)[["coefficients"]][2,1])-1)*100
  low <- (exp(summary(mod_simp_reg)[["coefficients"]][2,1]-1.96*summary(mod_simp_reg)[["coefficients"]][2,2])-1)*100
  high <- (exp(summary(mod_simp_reg)[["coefficients"]][2,1]+1.96*summary(mod_simp_reg)[["coefficients"]][2,2])-1)*100
  EAPC_cal[i,2] <- estimate
  EAPC_cal[i,3] <- low
  EAPC_cal[i,4] <- high
}

数据整理

EAPC_cal <- EAPC_cal %>% mutate(EAPC=round(EAPC,2),
                                LCI=round(LCI,2),
                                UCI=round(UCI,2))
EAPC_cal <- EAPC_cal %>% mutate(EAPC_CI = paste(EAPC, LCI,sep = '\n(')) %>% 
                         mutate(EAPC_CI = paste(EAPC_CI, UCI,sep = ' to ')) %>% 
                         mutate(EAPC_CI = paste0(EAPC_CI, ')'))
head(EAPC_cal)
课程示例来源            location  EAPC   LCI   UCI                 EAPC_CI
课程示例来源 1            Rwanda -2.64 -2.96 -2.32 -2.64\n(-2.96 to -2.32)
课程示例来源 2           Morocco  0.23  0.08  0.39    0.23\n(0.08 to 0.39)
课程示例来源 3 Equatorial Guinea -1.26 -1.51 -1.01 -1.26\n(-1.51 to -1.01)
课程示例来源 4           Nigeria  0.33  0.17  0.49    0.33\n(0.17 to 0.49)
课程示例来源 5            Latvia  0.55  0.26  0.84    0.55\n(0.26 to 0.84)
课程示例来源 6          Zimbabwe  0.06 -0.21  0.34   0.06\n(-0.21 to 0.34)

咳咳咳,硬核广告

GBDR如何实现一行代码计算EAPC

# GBDR包如何实现一行代码计算EAPC
library(GBDR)
EC <- read.csv('IHME-GBD_2019_DATA-9bf5eaf2-1.csv')
result <- GBDeapc(EC,sex=T,rei=T,sep=' to ')
# 结果展示
knitr::kable(head(result),digits=2,align = 'c')
location measure sex cause rei EAPC LCI UCI EAPC_95CI
High-middle SDI DALYs (Disability-Adjusted Life Years) Both All causes All risk factors -2.02 -2.18 -1.85 -2.02
(-2.18 to -2.18)
High-middle SDI DALYs (Disability-Adjusted Life Years) Both All causes All risk factors -2.16 -2.28 -2.04 -2.16
(-2.28 to -2.28)
High-middle SDI DALYs (Disability-Adjusted Life Years) Both All causes All risk factors -2.06 -2.21 -1.91 -2.06
(-2.21 to -2.21)
High-middle SDI Deaths Both All causes All risk factors -1.81 -1.97 -1.65 -1.81
(-1.97 to -1.97)
High-middle SDI Deaths Both All causes All risk factors -2.09 -2.24 -1.93 -2.09
(-2.24 to -2.24)
High-middle SDI Deaths Both All causes All risk factors -1.92 -2.08 -1.75 -1.92
(-2.08 to -2.08)

2.世界地图的拼接

以下图为例进行绘制

载入相关R包

library(sf)
library(patchwork)
library(ggplot2)
library(tidyverse)

载入数据

GBD <- read.csv("national HIV.csv")
location <- read.csv("location.csv")
GBD <- left_join(GBD,location,by="location")

主图绘制

# shp数据的读取与配置
map <- st_read("世界国家.shp") #
map <- st_set_crs(map,4326)
## 绘制数据读取
main_map_data <- left_join(map,GBD,by=c("NAME"="location3")) %>% 
  filter(measure=="Incidence") %>% 
  filter(year==2019)  %>% 
  filter(sex=="Both")
head(main_map_data)
课程示例来源 Simple feature collection with 6 features and 21 fields
课程示例来源 Geometry type: MULTIPOLYGON
课程示例来源 Dimension:     XY
课程示例来源 Bounding box:  xmin: -141 ymin: 41.38056 xmax: -11.31232 ymax: 83.62742
课程示例来源 Geodetic CRS:  WGS 84
课程示例来源   OBJECTID      NAME    FENAME                       FCNAME  SOC  POP ELEMID
课程示例来源 1        1      <NA>      <NA>                         <NA> <NA>    0      0
课程示例来源 2        1      <NA>      <NA>                         <NA> <NA>    0      0
课程示例来源 3        1      <NA>      <NA>                         <NA> <NA>    0      0
课程示例来源 4        1      <NA>      <NA>                         <NA> <NA>    0      0
课程示例来源 5        2 GREENLAND Greenland <U+00B8><f1><c1><ea><U+003C>  GRL    6      1
课程示例来源 6        3    CANADA    Canada <U+00BC><d3><c4><U+00F4><f3>  CAN 3166      2
课程示例来源   SHAPE_LENG SHAPE_AREA ID1   measure                   location  sex
课程示例来源 1   154.0089   27.50754   1 Incidence Taiwan (Province of China) Both
课程示例来源 2   154.0089   27.50754   1 Incidence                       Guam Both
课程示例来源 3   154.0089   27.50754   1 Incidence                  Palestine Both
课程示例来源 4   154.0089   27.50754   1 Incidence                South Sudan Both
课程示例来源 5  1359.5926  662.85536   2 Incidence                  Greenland Both
课程示例来源 6  3635.7366 1692.80859   3 Incidence                     Canada Both
课程示例来源                age    cause metric year         val       upper      lower
课程示例来源 1 Age-standardized HIV/AIDS   Rate 2019   6.3710681  10.4462067  3.0948698
课程示例来源 2 Age-standardized HIV/AIDS   Rate 2019   7.2915286  15.1831608  3.1779404
课程示例来源 3 Age-standardized HIV/AIDS   Rate 2019   0.4226954   0.6285992  0.2908644
课程示例来源 4 Age-standardized HIV/AIDS   Rate 2019 121.4051481 364.5104827 19.5385624
课程示例来源 5 Age-standardized HIV/AIDS   Rate 2019  21.2943560  36.0669938  9.7201308
课程示例来源 6 Age-standardized HIV/AIDS   Rate 2019   9.8149295  15.3842662  4.7848242
课程示例来源   location2                       geometry
课程示例来源 1      <NA> MULTIPOLYGON (((-88.72527 4...
课程示例来源 2      <NA> MULTIPOLYGON (((-88.72527 4...
课程示例来源 3      <NA> MULTIPOLYGON (((-88.72527 4...
课程示例来源 4      <NA> MULTIPOLYGON (((-88.72527 4...
课程示例来源 5 Greenland MULTIPOLYGON (((-50.2286 62...
课程示例来源 6    Canada MULTIPOLYGON (((-84.91705 7...

绘图

p <- main_map_data  %>% 
  ggplot()+
  geom_sf(aes(group=NAME,fill=val),color='black',size = 0.5) +
  theme_void()+
  scale_fill_distiller(palette="Spectral",# 色盘
                       name="ASR") +
  labs(x="",y="",title="")+ 
  theme(legend.position = c(0.1,0.2),
        legend.title = element_text(color="black", 
                                    size = 10, 
                                    #family = "A",
                                    #face = "bold"
        ),
        plot.title = element_text(color="black", 
                                  size = 14, 
                                  #family = "A",
                                  #face = "bold"
        ),
        legend.text = element_text(color="black", 
                                   size = 10, 
                                   #family = "A",
                                   #face = "bold"
        ),
        panel.grid=element_blank(),
        #legend.position = 'none',
        axis.title.x = element_blank(),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.title.y = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank(),
  )

绘制小图

思路:考虑到shp文件读取的数据大小太大了,影响运行速度,所以小图中不涉及到中国区域的数据采用ggplot2自带的map数据

worldData <- map_data('world')
small_map_data <- GBD %>% 
            filter(measure=="Incidence") %>% 
            filter(year==2019)  %>% 
            filter(sex=="Both")

small_map_data$location[small_map_data$location == 'United States of America'] = 'USA'
small_map_data$location[small_map_data$location == 'Russian Federation'] = 'Russia'
small_map_data$location[small_map_data$location == 'United Kingdom'] = 'UK'
small_map_data$location[small_map_data$location == 'Congo'] = 'Republic of Congo'
small_map_data$location[small_map_data$location == "Iran (Islamic Republic of)"] = 'Iran'
small_map_data$location[small_map_data$location == "Democratic People's Republic of Korea"] = 'North Korea'
small_map_data$location[small_map_data$location == "Taiwan (Province of China)"] = 'Taiwan'
small_map_data$location[small_map_data$location == "Republic of Korea"] = 'South Korea'
small_map_data$location[small_map_data$location == "United Republic of Tanzania"] = 'Tanzania'
small_map_data$location[small_map_data$location == "Bolivia (Plurinational State of)"] = 'Bolivia'
small_map_data$location[small_map_data$location == "Venezuela (Bolivarian Republic of)"] = 'Venezuela'
small_map_data$location[small_map_data$location == "Czechia"] = 'Czech Republic'
small_map_data$location[small_map_data$location == "Republic of Moldova"] = 'Moldova'
small_map_data$location[small_map_data$location == "Viet Nam"] = 'Vietnam'
small_map_data$location[small_map_data$location == "Lao People's Democratic Republic"] = 'Laos'
small_map_data$location[small_map_data$location == "Syrian Arab Republic"] = 'Syria'
small_map_data$location[small_map_data$location == "North Macedonia"] = 'Macedonia'
small_map_data$location[small_map_data$location == "Micronesia (Federated States of)"] = 'Micronesia'
small_map_data$location[small_map_data$location == "Macedonia"] = 'North Macedonia'
small_map_data$location[small_map_data$location == "Trinidad and Tobago"] = 'Trinidad'
a <- small_map_data[small_map_data$location == "Trinidad",]
a$location <- 'Tobago'
small_map_data <- rbind(small_map_data,a)
small_map_data$location[small_map_data$location == "Cabo Verde"] = 'Cape Verde'
small_map_data$location[small_map_data$location == "United States Virgin Islands"] = 'Virgin Islands'
small_map_data$location[small_map_data$location == "Antigua and Barbuda"] = 'Antigu'
a <- small_map_data[small_map_data$location == "Antigu",]
a$location <- 'Barbuda'
small_map_data <- rbind(small_map_data,a)
small_map_data$location[small_map_data$location == "Saint Kitts and Nevis"] = 'Saint Kitts'
a <- small_map_data[small_map_data$location == "Saint Kitts",]
a$location <- 'Nevis'
small_map_data <- rbind(small_map_data,a)
small_map_data$location[small_map_data$location == "Côte d'Ivoire"] = 'Ivory Coast'
small_map_data$location[small_map_data$location == "Saint Vincent and the Grenadines"] = 'Saint Vincent'
a <- small_map_data[small_map_data$location == "Saint Vincent",]
a$location <- 'Grenadines'
small_map_data <- rbind(small_map_data,a)
small_map_data$location[small_map_data$location == "Eswatini"] = 'Swaziland'
small_map_data$location[small_map_data$location == "Brunei Darussalam"] = 'Brunei'
small_map_data <- full_join(worldData,small_map_data,by = c('region'='location')) %>%   
                         filter(val != "NA")
dim(small_map_data)
head(small_map_data)
课程示例来源 [1] 92595    17
课程示例来源       long      lat group order      region subregion   measure  sex
课程示例来源 1 74.89131 37.23164     2    12 Afghanistan      <NA> Incidence Both
课程示例来源 2 74.84023 37.22505     2    13 Afghanistan      <NA> Incidence Both
课程示例来源 3 74.76738 37.24917     2    14 Afghanistan      <NA> Incidence Both
课程示例来源 4 74.73896 37.28564     2    15 Afghanistan      <NA> Incidence Both
课程示例来源 5 74.72666 37.29072     2    16 Afghanistan      <NA> Incidence Both
课程示例来源 6 74.66895 37.26670     2    17 Afghanistan      <NA> Incidence Both
课程示例来源                age    cause metric year      val    upper     lower   location2
课程示例来源 1 Age-standardized HIV/AIDS   Rate 2019 2.346579 9.860539 0.1122461 Afghanistan
课程示例来源 2 Age-standardized HIV/AIDS   Rate 2019 2.346579 9.860539 0.1122461 Afghanistan
课程示例来源 3 Age-standardized HIV/AIDS   Rate 2019 2.346579 9.860539 0.1122461 Afghanistan
课程示例来源 4 Age-standardized HIV/AIDS   Rate 2019 2.346579 9.860539 0.1122461 Afghanistan
课程示例来源 5 Age-standardized HIV/AIDS   Rate 2019 2.346579 9.860539 0.1122461 Afghanistan
课程示例来源 6 Age-standardized HIV/AIDS   Rate 2019 2.346579 9.860539 0.1122461 Afghanistan
课程示例来源     location3
课程示例来源 1 AFGHANISTAN
课程示例来源 2 AFGHANISTAN
课程示例来源 3 AFGHANISTAN
课程示例来源 4 AFGHANISTAN
课程示例来源 5 AFGHANISTAN
课程示例来源 6 AFGHANISTAN
fig <- small_map_data %>% 
  ggplot()+
  geom_polygon(aes(x = long, y = lat,group = group,fill=val),
               colour="black",size=0.5) +
  theme_bw()+
  scale_fill_distiller(palette="Spectral",# 色盘
                       name="ASR") + 
  theme(legend.position = 'none',
        legend.title = element_blank(),
        plot.title = element_text(color="black", 
                                  size = 10, 
                                  #family = "A",
                                  #face = "bold"
        ),
        legend.text = element_text(color="black", 
                                   size = 12, 
                                   #family = "A",
                                   #face = "bold"
        ),
        panel.grid=element_blank(),
        panel.border = element_rect(color='black',
                                    fill=NA,
                                    size = 0.5),
        #legend.position = 'none',
        axis.title.x = element_blank(),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.title.y = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank(),
  )

绘制Caribbean and central America地区

p2 <- fig+ labs(x=" ",y="",title="Caribbean and central America")+
  coord_cartesian(xlim = c(-92,-60),ylim = c(5,27))

绘制Persian Gulf地区

p3 <- fig+ labs(x=" ",y="",title="Persian Gulf")+
  coord_cartesian(xlim = c(45,55),ylim = c(19,31))

绘制Balkan Peninsula地区

p4 <- fig+ labs(x=" ",y="",title="Balkan Peninsula")+
  coord_cartesian(xlim =  c(12,32),ylim = c(35,53))

绘制Sotheast Asia地区

p5 <- fig+ labs(x=" ",y="",title="Sotheast Asia")+
  coord_cartesian(xlim =  c(98,123),ylim = c(-10,8))

绘制West Africa地区

p6 <- fig+ labs(x=" ",y="",title="West Africa") +
  coord_cartesian(xlim =  c(-17,-7),ylim = c(7,20))

绘制Eastern Mediterranean地区

p7 <- fig+ labs(x=" ",y="",title="Eastern \nMediterranean")+
  coord_cartesian(xlim =  c(32,37),ylim = c(29,35))

绘制Northern Europe地区

p8 <- fig+ labs(x=" ",y="",title="Northern Europe") +
  coord_cartesian(xlim =  c(5,25),ylim = c(48,60))

使用patchwork进行拼图

思路

开始绘制

A= (p6|p7)/p8 

plot<-  p +
  (p2+p3+p4+p5+A+plot_layout(ncol = 5,widths=c(1.5,1,1.1,1.2,1)))+ 
  plot_layout(ncol = 1,heights = c(9, 3))  

咳咳咳,硬核广告

GBDR如何实现一行绘制GBD世界地图

# GBDR如何实现一行绘制GBD世界地图
library(GBDR)
GBD <- read.csv("national HIV.csv") %>% 
            filter(measure=="Incidence") %>% 
            filter(year==2019)  %>% 
            filter(sex=="Both")

plot <- GBDworldmap(data=GBD)

双坐标轴的绘制

思路

双坐标轴的原理:一共两套数据,第一套数据先画出来,第一个y轴在左边;第二套数据是第一套的数据基础上将y轴上的数值转换成第一套的y轴数值,但需要保证转换后的第二套数据的y轴数值最大值需要小于第一套数据的y轴数值最大值

因此,我们需要计算第一套数据和第二套数据最大值的比值比,便于进行转换

数据载入

data <- read.csv('EC_nation.csv')
Number <- data %>% filter(age=='All Ages') %>% 
                   filter(metric== 'Number') %>% 
                   filter(location == "China") %>% 
                   filter(measure=='Incidence')

ASR <- data %>% filter(age=='Age-standardized') %>% 
                 filter(metric== 'Rate') %>%
                 filter(location == "China") %>% 
                 filter(measure=='Incidence')

## ratio的目的是为了让副坐标轴的最大值能够落在主坐标轴的区间内
ratio <- max(ASR$val)/max(Number$val)

head(Number)
课程示例来源     measure location  sex      age             cause metric year      val
课程示例来源 1 Incidence    China Both All Ages Esophageal cancer Number 1990 173686.9
课程示例来源 2 Incidence    China Both All Ages Esophageal cancer Number 1991 178919.4
课程示例来源 3 Incidence    China Both All Ages Esophageal cancer Number 1992 182370.8
课程示例来源 4 Incidence    China Both All Ages Esophageal cancer Number 1993 186876.4
课程示例来源 5 Incidence    China Both All Ages Esophageal cancer Number 1994 189161.5
课程示例来源 6 Incidence    China Both All Ages Esophageal cancer Number 1995 192971.1
课程示例来源      upper    lower
课程示例来源 1 203391.3 112107.1
课程示例来源 2 208176.7 111573.9
课程示例来源 3 212073.8 113522.6
课程示例来源 4 214966.9 116275.1
课程示例来源 5 217391.1 119163.3
课程示例来源 6 218575.0 117945.6
head(ASR)
课程示例来源     measure location  sex              age             cause metric year
课程示例来源 1 Incidence    China Both Age-standardized Esophageal cancer   Rate 1990
课程示例来源 2 Incidence    China Both Age-standardized Esophageal cancer   Rate 1991
课程示例来源 3 Incidence    China Both Age-standardized Esophageal cancer   Rate 1992
课程示例来源 4 Incidence    China Both Age-standardized Esophageal cancer   Rate 1993
课程示例来源 5 Incidence    China Both Age-standardized Esophageal cancer   Rate 1994
课程示例来源 6 Incidence    China Both Age-standardized Esophageal cancer   Rate 1995
课程示例来源        val    upper    lower
课程示例来源 1 20.96601 24.32625 13.62131
课程示例来源 2 21.03550 24.27982 13.29404
课程示例来源 3 20.89134 24.12736 13.22623
课程示例来源 4 20.86542 23.92326 13.11744
课程示例来源 5 20.57809 23.51216 13.09761
课程示例来源 6 20.44211 23.03363 12.73444
ratio
课程示例来源 [1] 8.102172e-05

第一幅图

p <- ggplot(Number,aes(year,val))+
    geom_col(aes(fill=sex),position = 'dodge',width = 0.8)+
    geom_errorbar(aes(year,group=sex,ymin=lower,ymax=upper),
                  position = position_dodge(width = 0.8),
                  width=0.7,cex=0.5)+
    labs(title = NULL,x='Year',y='Number of cases') +
    theme_bw() +
    theme(plot.title=element_text(hjust=0.5),
          axis.text.x=element_text(vjust=1,size=8,color='black'),
          axis.text.y=element_text(size=8,color='black'),
          axis.title.y = element_text(size = 10),
          axis.title.x = element_text(size = 10),
          title = element_text(size = 10, hjust = 0.5),
          legend.position = 'right')

第二幅图

  q <- ggplot()+
    theme_bw() + 
   labs(title = NULL,x='Year',y='ASR (per 100000 populations)') +
    theme(plot.title=element_text(hjust=0.5),
          axis.text.x=element_text(vjust=1,size=8,color='black'),
          axis.text.y=element_text(size=8,color='black'),
          axis.title.y = element_text(size = 10),
          axis.title.x = element_text(size = 10),
          title = element_text(size = 10, hjust = 0.5),
          legend.position = 'right') +
    geom_ribbon(data=ASR,
                aes(x=year,ymin=lower,ymax=upper,
                    fill=sex),
                alpha=0.1)+
    geom_line(data=ASR,
              aes(x=year,y=val,
                  color=sex))

将2套数据整合至一幅图中

  plot <- ggplot(Number,aes(year,val))+
    geom_col(aes(fill=sex),position = 'dodge',width = 0.8)+
    geom_errorbar(aes(year,group=sex,ymin=lower,ymax=upper),
                  position = position_dodge(width = 0.8),
                  width=0.7,cex=0.5)+
    labs(title = NULL,x='Year',y='Number of cases') +
    theme_bw() +
    theme(plot.title=element_text(hjust=0.5),
          axis.text.x=element_text(vjust=1,size=8,color='black'),
          axis.text.y=element_text(size=8,color='black'),
          axis.title.y = element_text(size = 10),
          axis.title.x = element_text(size = 10),
          title = element_text(size = 10, hjust = 0.5),
          legend.position = 'right') +
    geom_ribbon(data=ASR,
                aes(x=year,ymin=lower/ratio,ymax=upper/ratio,
                    fill=sex),
                alpha=0.1)+
    geom_line(data=ASR,
              aes(x=year,y=val/ratio,
                  color=sex)) + 
    scale_y_continuous(sec.axis = sec_axis(~.*ratio,
                                           name="ASR (per 100000 populations)"))

咳咳咳,硬核广告

GBDR如何实现一行绘制双坐标轴

# GBDR如何实现一行绘制GBD世界地图
library(GBDR)
data <- read.csv('EC_nation.csv')
plot <- ggDx(data,auto_ratio = TRUE,
             x_axes = "year",
             measure_name = "Incidence",
             location_name = "China")

练习题

1.利用提供的GBD数据文件IHD_nation.csv计算204国家的EAPC,并将结果绘制成地图

2.利用提供的GBD数据文件绘制任一一个国家的双坐标轴图,并以sex作为group进行绘图

参考文献

  1. B F Hankey, L A Ries, C L Kosary, E J Feuer, R M Merrill, L X Clegg, B K Edwards,Partitioning linear trends in age-adjusted rates, Cancer Causes Control,2000 Jan;11(1):31-5