diff --git a/README.md b/README.md
index ad4f164..4e57fe8 100644
--- a/README.md
+++ b/README.md
@@ -118,5 +118,12 @@ Climate change contributions to flood characteristics for the past 14% scenario
Flood impacts and climate change contribution at different impact levels. Flood impacts were presented from (a) area of developed land and (b) population exposed to floodwater exceeding specific depth thresholds. One ft is approximately 0.3 m.
![](./figures/impact_depth.png)
-Social inequality of flood exposure and the role of climate change. Data were summarised for people exposed to deeper than 0.5 ft (≈ 0.15m, a) and 3 ft (≈ 1m, b) of floodwater. Inequality was presented through concentration curves of population against vulnerability (left) and tables specifying concentration and SII values in different cases (right). Dash lines indicate theoretical uniform exposure.
-![](./figures/svi_ssi.png)
+Illustration of concentration curves and social inequality indices. Panel a illustrates the concept of the designed indices, and panel b shows data derived from the present scenario analysis for people exposed to different levels of floodwater.
+|
|
|
|
+| --- | --- |--- |
+|![](./figures/sii_example.png)|![](./figures/sii_present.png)||
+
+Social inequality of flood exposure and the role of climate change. Both the absolute (a) and relative (b) social inequality indices are included. Data were summarised for people exposed to deeper than 0.5 ft (≈ 0.15m, light blue) and 3 ft (≈ 1m, dark blue) of floodwater.
+|
|
|
|
+| --- | --- |--- |
+|![](./figures/siia_climate.png)|![](./figures/siir_climate.png)||
diff --git a/figures/plot_table.R b/figures/plot_table.R
index d43a6e1..648ada9 100644
--- a/figures/plot_table.R
+++ b/figures/plot_table.R
@@ -317,7 +317,25 @@ ggarrange(p_nlcd_depth, p_pop_depth, ncol=2, nrow=1, common.legend = TRUE, legen
ggsave(path(plot_folder,'impact_depth.png'),w=6,h=3)
#SVI
-
+# Figure 4(a)
+# Make up data for graphical illustration of social inequality index
+df_example = tibble(
+ reference = c(0,0.5,0.75,0.9,1),
+ exposed = c(0,0.1,0.25,0.5,1),
+ s = c(0,0.25,0.5,0.75,1))
+ggplot(df_example,aes(x=s))+
+ geom_area(aes(y=reference),color='grey30',fill='grey30',alpha=0.3)+
+ annotate("text",label='Reference population',x=0.375,y=0.675,color='grey30',angle=45,vjust=-1)+
+ geom_area(aes(y=s),linetype=2,color='black',fill='grey30',alpha=0.3)+
+ annotate("text",label='Uniform exposure',x=0.5,y=0.5,angle=45,vjust=-1)+
+ geom_area(aes(y=exposed),color='dodgerblue4',fill='dodgerblue1')+
+ annotate("text",label='Exposed population',x=0.675,y=0.375,color='dodgerblue4',angle=45,vjust=1)+
+ coord_fixed()+
+ annotate("text",x=0,y=1,label='(a)',hjust=0,vjust=1)+
+ labs(x='Social Vulnerability Score (s)',y='Cumulative Share of Population')
+ggsave(path(plot_folder,'sii_example.png'),w=3,h=3)
+
+# Data from this experiment
# background
svi_bg_df = read_csv(path(base_folder,"data/impact/population/svi_bg.csv"))%>%
mutate(svi=factor(svi,levels=c("Lowest","Medium_low","Medium_high","Highest")))
@@ -335,26 +353,49 @@ svi_huc = svi_df %>% group_by(`...1`) %>%
svi_all = svi_df %>%
group_by(svi,version,threshold) %>% summarise(pop=sum(pop)) %>% ungroup %>%
- group_by(version,threshold) %>% mutate(pct=pop/sum(pop)*100) %>% ungroup
-
-svi_present = svi_all %>% filter(version=='present') %>% mutate(baseline=pop)
-svi_climate_change = svi_all%>% filter(version!='present')%>%
- left_join(dplyr::select(svi_present,c(svi,threshold,baseline))) %>%
- group_by(version,threshold) %>%
- mutate(pop_delta = abs(pop-baseline), pct_delta = pop_delta/sum(pop_delta)*100) %>% ungroup
-# svi_climate_change
-
-# reorganize data for plotting
-svi_data_plot = svi_climate_change %>% transmute(svi,version,threshold,pop=pop_delta,pct=pct_delta) %>%
- bind_rows(dplyr::select(svi_present,-baseline)) %>%
+ group_by(version,threshold) %>% mutate(pct=pop/sum(pop)*100) %>% ungroup %>%
bind_rows(add_column(svi_bg_all,version="background",threshold=0))
-# svi_data_plot
+
+# Prepare concentration curves
+pct2cump = function(df,v,th){
+ c(0,df%>%filter(version==v&threshold==th)%>%pull(pct)%>%cumsum)/100
+}
+
+version_threshold = svi_all %>% transmute(version,threshold) %>% unique()
+
+cc_all = foreach(i=1:nrow(version_threshold),.combine=bind_rows)%do%{
+ version=version_threshold$version[i]
+ threshold=version_threshold$threshold[i]
+ tibble(svi=c(0,0.25,0.5,0.75,1),
+ version=version,
+ threshold=threshold,
+ cc=pct2cump(svi_all,version,threshold))
+}
+
+# Figure 4(b)
+# Make up data for graphical illustration of social inequality index
+cc_bg = cc_all %>% filter(version=='background')
+cc_present_0p5 = cc_all %>% filter(version=='present'&threshold==0.5)
+cc_present_3 = cc_all %>% filter(version=='present'&threshold==3)
+ggplot(cc_bg,aes(x=svi))+
+ geom_line(aes(y=cc,color='grey30'))+
+ geom_line(aes(y=cc_present_0p5$cc,color='dodgerblue1'))+
+ geom_line(aes(y=cc_present_3$cc,color='dodgerblue4'))+
+ geom_line(aes(y=svi),linetype=2)+
+ annotate("text",x=0,y=1,label='(b)',hjust=0,vjust=1)+
+ coord_fixed()+
+ labs(x='Social Vulnerability Score (s)',y='Cumulative Share of Population')+
+ scale_color_manual(name=element_blank(),guide='legend',
+ values=c('dodgerblue1'='dodgerblue1','dodgerblue4'='dodgerblue4','grey30'='grey30'),
+ labels=c('Ex. > 0.5ft','Ex. > 3ft','Background'))+
+ theme(legend.position=c(0.75,0.2),legend.background=element_rect(fill="transparent"))
+ggsave(path(plot_folder,'sii_present.png'),w=3,h=3)
# inequality index
auc = function(data){
area = 0
last = 0
- for(d in data){
+ for(d in data[-1]){
sub_area = 0.25*(last+d)/2
area = area + sub_area
last = d
@@ -363,89 +404,52 @@ auc = function(data){
}
inequality_relative = function(data,ref){
- ref_auc = ref %>% cumsum %>% auc
- data_auc = data %>% cumsum %>% auc
+ ref_auc = ref %>% auc
+ data_auc = data %>% auc
output = (ref_auc-data_auc)/ref_auc
return(output)
}
inequality_absolute = function(data){
- data_auc = data %>% cumsum %>% auc
- output = 1-2*data_auc/100
+ data_auc = data %>% auc
+ output = 1-2*data_auc
return(output)
}
# SII_absolute of background population
-ref = svi_data_plot %>% filter(version=='background') %>% pull(pct)
+ref = cc_all %>% filter(version=='background') %>% pull(cc)
inequality_absolute(ref)
-calcSII = function(data,depth,ref){
- foreach(v=unique(data$version),.combine=bind_rows)%do%{
- if (v=='background') df = data %>% filter(version==v) %>% pull(pct)
- else df = data %>% filter(version==v&threshold==depth) %>% pull(pct)
- SII_a = inequality_absolute(df) %>% round(3)
- SII_r = inequality_relative(df,ref)%>% round(3)
- return(tibble(version=v,SII_a,SII_r))
+# SII of population exposed to flood in each scenario
+sii_all = foreach(i=1:nrow(version_threshold),.combine=bind_rows)%do%{
+ v=version_threshold$version[i]
+ depth=version_threshold$threshold[i]
+ if (v!='background'){
+ df = cc_all %>% filter(version==v&threshold==depth) %>% pull(cc)
+ SII_a = inequality_absolute(df)
+ SII_r = inequality_relative(df,ref)
+ return(tibble(version=v,threshold=depth,SII_a,SII_r))
}
-}
-
-version_lbl = c('background'='Background','present'='Present','p7'='\u0394 Past 7%','p14'='\u0394 Past 14%',
- 'f7'='\u0394 Future 7%','f14'='\u0394 Future 14%')
-
-# Prepare SVI_SII table for figure 5
-prepSVItbl = function(df,depth,ref,subtitle){
- tbl_theme = ttheme(base_style = "light",base_size = 9,padding = unit(c(1, 2), "mm"))
- df_sii = calcSII(df,depth,ref)
- df %>% filter(threshold==depth|threshold==0) %>%
- transmute(svi,Scenario=version,pct=round(pct,2)) %>%
- pivot_wider(names_from=svi,values_from=pct)%>%
- left_join(df_sii,by=c('Scenario'='version'))%>%
- transmute(Scenario=version_lbl[Scenario],`%Least`=Lowest,`%Less`=Medium_low,`%More`=Medium_high,`%Most`=Highest,SII_a,SII_r) %>%
- ggtexttable(rows = NULL,theme = tbl_theme) %>%
- tab_add_title(text = subtitle, face = "bold")
-}
-plot_df_05 = prepSVItbl(svi_data_plot,0.5,ref,"All flood exposure")
-plot_df_3 = prepSVItbl(svi_data_plot,3,ref,"Deep flood exposure")
-
-# Prepare concentration curves for figure 5
-pct2cump = function(df,v,th){
- c(0,df%>%filter(version==v&threshold==th)%>%pull(pct)%>%cumsum)/100
-}
-concentrationCurve = function(df,threshold){
- tibble(svi=c(0,0.25,0.5,0.75,1),
- background=pct2cump(df,'background',0),
- present=pct2cump(df,'present',threshold),
- p7=pct2cump(df,'p7',threshold),
- p14=pct2cump(df,'p14',threshold),
- f7=pct2cump(df,'f7',threshold),
- f14=pct2cump(df,'f14',threshold),
- ) %>% pivot_longer(!svi) %>%
- mutate(name=factor(name,levels=c('background','present','p7','p14','f7','f14')))
-}
-plotSII = function(df,title){
- version_col = c('background'='grey30','present'='grey50','p7'='dodgerblue1','p14'='dodgerblue4','f7'='coral1','f14'='coral4')
- version_lbl = c('background'='Background','present'='Present','p7'='\u0394 Past 7%','p14'='\u0394 Past 14%',
- 'f7'='\u0394 Future 7%','f14'='\u0394 Future 14%')
- ggplot(df)+
- geom_line(aes(x=svi,y=value,color=name,group=name))+
- geom_segment(aes(x=0,y=0,xend=1,yend=1),linetype=2)+
- annotate("text",label=title,x=0,y=1,hjust=0)+
- labs(x='SVI',y='Cumulative proportion',color='Scenario')+
- scale_color_manual(values=version_col,labels=version_lbl)
-}
-
-df_concentration_05 = concentrationCurve(svi_data_plot,0.5)
-df_concentration_3 = concentrationCurve(svi_data_plot,3)
+}%>%
+ mutate(version=factor(version,levels=c('p14','p7','present','f7','f14')))
# Figure 5
-plot_ssi_05 = plotSII(df_concentration_05,'(a)')
-plot_ssi_3 = plotSII(df_concentration_3,'(b)')
-plot_ssi = ggarrange(plot_ssi_05, plot_df_05, plot_ssi_3, plot_df_3,
- ncol=2, nrow=2,widths = c(2, 3),
- common.legend = TRUE, legend="bottom",align='h')
-plot_ssi
-# ggarrange(plot_svi, plot_ssi, ncol=1, nrow=2,heights=c(3,4))
-ggsave(path(plot_folder,'svi_ssi.png'),w=6,h=5)
+sii_0p5 = sii_all %>% filter(threshold==0.5)
+sii_3 = sii_all %>% filter(threshold==3)
+version_lbl = c('present'='Present','p7'='Past\n7%','p14'='Past\n14%',
+ 'f7'='Future\n7%','f14'='Future\n14%')
+ggplot(sii_0p5)+
+ geom_point(aes(x=version,y=SII_r,color='dodgerblue1'))+
+ geom_line(aes(x=version,y=SII_r,group=threshold,color='dodgerblue1'))+
+ geom_point(data=sii_3,aes(x=version,y=SII_r,color='dodgerblue4'))+
+ geom_line(data=sii_3,aes(x=version,y=SII_r,group=threshold,color='dodgerblue4'))+
+ scale_x_discrete(labels=version_lbl)+
+ labs(x='Climate scenarios',y='SII_relative')+
+ scale_color_manual(name=element_blank(),guide='legend',
+ values=c('dodgerblue1'='dodgerblue1','dodgerblue4'='dodgerblue4'),
+ labels=c('Ex. > 0.5ft','Ex. > 3ft','Background'))+
+ theme(legend.position=c(0.75,0.5),legend.background=element_rect(fill="transparent"))
+ggsave(path(plot_folder,'sii_climate.png'),w=3,h=3)
################################################################
# Validation
diff --git a/figures/sii_example.png b/figures/sii_example.png
new file mode 100644
index 0000000..0a7b9fe
Binary files /dev/null and b/figures/sii_example.png differ
diff --git a/figures/sii_present.png b/figures/sii_present.png
new file mode 100644
index 0000000..be03911
Binary files /dev/null and b/figures/sii_present.png differ
diff --git a/figures/siia_climate.png b/figures/siia_climate.png
new file mode 100644
index 0000000..52da21b
Binary files /dev/null and b/figures/siia_climate.png differ
diff --git a/figures/siir_climate.png b/figures/siir_climate.png
new file mode 100644
index 0000000..fa403a4
Binary files /dev/null and b/figures/siir_climate.png differ
diff --git a/figures/svi_ssi.png b/figures/svi_ssi.png
deleted file mode 100644
index 58296f6..0000000
Binary files a/figures/svi_ssi.png and /dev/null differ