Commit bc0d22b5 authored by Heraut Louis's avatar Heraut Louis
Browse files

Map

parent 02c8aecf
No related merge requests found
Showing with 549 additions and 356 deletions
+549 -356
...@@ -14,7 +14,7 @@ library(RColorBrewer) ...@@ -14,7 +14,7 @@ library(RColorBrewer)
source('plotting/panel.R', encoding='latin1') source('plotting/panel.R', encoding='latin1')
panels_layout = function (df_data, df_meta, layout_matrix, figdir='', filedir_opt='', filename_opt='', variable='', df_trend=NULL, p_threshold=0.1, unit2day=365.25, type='', trend_period=NULL, mean_period=NULL, axis_xlim=NULL, missRect=FALSE, time_header=NULL, info_header=TRUE, time_ratio=2, var_ratio=3, shpdir=NULL, fr_shpname=NULL, rv_shpname=NULL, computer_data_path=NULL) { panels_layout = function (df_data, df_meta, layout_matrix, figdir='', filedir_opt='', filename_opt='', variable='', df_trend=NULL, p_threshold=0.1, unit2day=365.25, type='', trend_period=NULL, mean_period=NULL, axis_xlim=NULL, missRect=FALSE, time_header=NULL, info_header=TRUE, time_ratio=2, var_ratio=3, fr_shpdir=NULL, fr_shpname=NULL, bs_shpdir=NULL, bs_shpname=NULL, rv_shpdir=NULL, rv_shpname=NULL, computer_data_path=NULL) {
outfile = "Panels" outfile = "Panels"
if (filename_opt != '') { if (filename_opt != '') {
...@@ -343,49 +343,56 @@ panels_layout = function (df_data, df_meta, layout_matrix, figdir='', filedir_op ...@@ -343,49 +343,56 @@ panels_layout = function (df_data, df_meta, layout_matrix, figdir='', filedir_op
} }
# By # # By
slice = 12 # slice = 12
nMat = as.integer(nCode/slice) + 1 # nMat = as.integer(nCode/slice) + 1
sublist_df2plot = list_df2plot # sublist_df2plot = list_df2plot
for (i in 1:nMat) { # for (i in 1:nMat) {
subdf_meta = df_meta[(slice*(i-1)+1):(slice*i),] # subdf_meta = df_meta[(slice*(i-1)+1):(slice*i),]
subdf_meta = subdf_meta[!is.na(subdf_meta$code),] # subdf_meta = subdf_meta[!is.na(subdf_meta$code),]
subCode = subdf_meta$code # subCode = subdf_meta$code
for (j in 1:nbp) { # for (j in 1:nbp) {
df_datatmp = list_df2plot[[j]]$data # df_datatmp = list_df2plot[[j]]$data
df_trendtmp = list_df2plot[[j]]$trend # df_trendtmp = list_df2plot[[j]]$trend
subdf_data = df_datatmp[(df_datatmp$code %in% subCode),] # subdf_data = df_datatmp[(df_datatmp$code %in% subCode),]
subdf_trend = df_trendtmp[(df_trendtmp$code %in% subCode),] # subdf_trend = df_trendtmp[(df_trendtmp$code %in% subCode),]
sublist_df2plot[[j]]$data = subdf_data # sublist_df2plot[[j]]$data = subdf_data
sublist_df2plot[[j]]$trend = subdf_trend # sublist_df2plot[[j]]$trend = subdf_trend
} # }
mat = matrice_panel(sublist_df2plot, # mat = matrice_panel(sublist_df2plot,
subdf_meta, # subdf_meta,
trend_period=trend_period) # trend_period=trend_period)
# Saving matrix plot # Saving matrix plot
ggsave(plot=mat, # ggsave(plot=mat,
path=outdirTmp, # path=outdirTmp,
filename=paste('matrix_', i, '.pdf', sep=''), # filename=paste('matrix_', i, '.pdf', sep=''),
width=29.7, height=21, units='cm', dpi=100) # width=29.7, height=21, units='cm', dpi=100)
} # }
map = map_panel(computer_data_path=computer_data_path,
shpdir=shpdir,
fr_shpname=fr_shpname,
rv_shpname=rv_shpname)
matrice_panel(list_df2plot, df_meta, trend_period,
slice=12, outdirTmp=outdirTmp)
map_panel(list_df2plot,
df_meta,
computer_data_path=computer_data_path,
fr_shpdir=fr_shpdir,
fr_shpname=fr_shpname,
bs_shpdir=bs_shpdir,
bs_shpname=bs_shpname,
rv_shpdir=rv_shpdir,
rv_shpname=rv_shpname,
outdirTmp=outdirTmp)
# PDF combine # PDF combine
pdf_combine(input=file.path(outdirTmp, list.files(outdirTmp)), pdf_combine(input=file.path(outdirTmp, list.files(outdirTmp)),
output=file.path(outdir, outfile)) output=file.path(outdir, outfile))
......
...@@ -658,21 +658,459 @@ time_panel = function (df_data_code, df_trend_code, type, p_threshold=0.1, missR ...@@ -658,21 +658,459 @@ time_panel = function (df_data_code, df_trend_code, type, p_threshold=0.1, missR
} }
matrice_panel = function (list_df2plot, df_meta, trend_period) { matrice_panel = function (list_df2plot, df_meta, trend_period, slice=NULL, outdirTmp='', outnameTmp='matrix') {
nbp = length(list_df2plot) nbp = length(list_df2plot)
# Get all different stations code
Code = levels(factor(df_meta$code))
nCode = length(Code)
if (!is.null(slice)) {
# By
nMat = as.integer(nCode/slice) + 1
sublist_df2plot = list_df2plot
for (i in 1:nMat) {
subdf_meta = df_meta[(slice*(i-1)+1):(slice*i),]
subdf_meta = subdf_meta[!is.na(subdf_meta$code),]
subCode = subdf_meta$code
for (j in 1:nbp) {
df_datatmp = list_df2plot[[j]]$data
df_trendtmp = list_df2plot[[j]]$trend
subdf_data = df_datatmp[(df_datatmp$code %in% subCode),]
subdf_trend = df_trendtmp[(df_trendtmp$code %in% subCode),]
sublist_df2plot[[j]]$data = subdf_data
sublist_df2plot[[j]]$trend = subdf_trend
}
mat = matrice_panel(sublist_df2plot,
subdf_meta,
trend_period=trend_period,
outdirTmp=outdirTmp,
outnameTmp=paste(outnameTmp,
'_', i,
sep=''))
}
} else {
print(paste('matrix :', outnameTmp))
# nbp = length(list_df2plot)
# # Get all different stations code
# Code = levels(factor(df_meta$code))
# nCode = length(Code)
df_trend = list_df2plot[[1]]$trend
nPeriod_max = 0
for (code in Code) {
df_trend_code = df_trend[df_trend$code == code,]
Start = df_trend_code$period_start
UStart = levels(factor(Start))
End = df_trend_code$period_end
UEnd = levels(factor(End))
nPeriod = max(length(UStart), length(UEnd))
if (nPeriod > nPeriod_max) {
nPeriod_max = nPeriod
}
}
Start_code = vector(mode='list', length=nCode)
End_code = vector(mode='list', length=nCode)
Code_code = vector(mode='list', length=nCode)
Periods_code = vector(mode='list', length=nCode)
for (j in 1:nCode) {
code = Code[j]
df_trend_code = df_trend[df_trend$code == code,]
Start = df_trend_code$period_start
UStart = levels(factor(Start))
End = df_trend_code$period_end
UEnd = levels(factor(End))
nPeriod = max(length(UStart), length(UEnd))
Periods = c()
for (i in 1:nPeriod_max) {
Periods = append(Periods,
paste(substr(Start[i], 1, 4),
substr(End[i], 1, 4),
sep=' / '))
}
Start_code[[j]] = Start
End_code[[j]] = End
Code_code[[j]] = code
Periods_code[[j]] = Periods
}
TrendMean_code = array(rep(1, nPeriod_max*nbp*nCode),
dim=c(nPeriod_max, nbp, nCode))
for (j in 1:nPeriod_max) {
for (k in 1:nCode) {
code = Code[k]
for (i in 1:nbp) {
df_data = list_df2plot[[i]]$data
df_trend = list_df2plot[[i]]$trend
p_threshold = list_df2plot[[i]]$p_threshold
df_data_code = df_data[df_data$code == code,]
df_trend_code = df_trend[df_trend$code == code,]
Start = Start_code[Code_code == code][[1]][j]
End = End_code[Code_code == code][[1]][j]
Periods = Periods_code[Code_code == code][[1]][j]
df_data_code_per =
df_data_code[df_data_code$Date >= Start
& df_data_code$Date <= End,]
df_trend_code_per =
df_trend_code[df_trend_code$period_start == Start
& df_trend_code$period_end == End,]
Ntrend = nrow(df_trend_code_per)
if (Ntrend > 1) {
df_trend_code_per = df_trend_code_per[1,]
}
dataMean = mean(df_data_code_per$Qm3s, na.rm=TRUE)
trendMean = df_trend_code_per$trend / dataMean
TrendMean_code[j, i, k] = trendMean
}
}
}
minTrendMean = apply(TrendMean_code, c(1, 2), min, na.rm=TRUE)
maxTrendMean = apply(TrendMean_code, c(1, 2), max, na.rm=TRUE)
Periods_mat = c()
NPeriod_mat = c()
Type_mat = list()
Code_mat = c()
Pthresold_mat = c()
TrendMean_mat = c()
DataMean_mat = c()
Fill_mat = c()
Color_mat = c()
for (j in 1:nPeriod_max) {
for (code in Code) {
for (i in 1:nbp) {
df_data = list_df2plot[[i]]$data
df_trend = list_df2plot[[i]]$trend
p_threshold = list_df2plot[[i]]$p_threshold
type = list_df2plot[[i]]$type
df_data_code = df_data[df_data$code == code,]
df_trend_code = df_trend[df_trend$code == code,]
Start = Start_code[Code_code == code][[1]][j]
End = End_code[Code_code == code][[1]][j]
Periods = Periods_code[Code_code == code][[1]][j]
df_data_code_per =
df_data_code[df_data_code$Date >= Start
& df_data_code$Date <= End,]
df_trend_code_per =
df_trend_code[df_trend_code$period_start == Start
& df_trend_code$period_end == End,]
Ntrend = nrow(df_trend_code_per)
if (Ntrend > 1) {
df_trend_code_per = df_trend_code_per[1,]
}
dataMean = mean(df_data_code_per$Qm3s, na.rm=TRUE)
trendMean = df_trend_code_per$trend / dataMean
if (df_trend_code_per$p <= p_threshold){
color_res = get_color(trendMean,
minTrendMean[j, i],
maxTrendMean[j, i],
palette_name='perso',
reverse=TRUE)
fill = color_res$color
color = 'white'
Pthresold = p_thresold
} else {
fill = 'white'
color = 'grey85'
Pthresold = NA
}
Periods_mat = append(Periods_mat, Periods)
NPeriod_mat = append(NPeriod_mat, j)
Type_mat = append(Type_mat, type)
Code_mat = append(Code_mat, code)
Pthresold_mat = append(Pthresold_mat, Pthresold)
TrendMean_mat = append(TrendMean_mat, trendMean)
DataMean_mat = append(DataMean_mat, dataMean)
Fill_mat = append(Fill_mat, fill)
Color_mat = append(Color_mat, color)
}
}
}
height = length(Code)
width = nbp * 2 * nPeriod_max + nPeriod_max
options(repr.plot.width=width, repr.plot.height=height)
mat = ggplot() + theme_ash +
theme(
panel.border=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank(),
axis.ticks.x=element_blank(),
axis.title.y=element_blank(),
)
# xt = -1
# yt = height + 1.75
# Title = bquote(bold(Territoire))
# mat = mat +
# annotate("text", x=xt, y=yt,
# label=Title,
# hjust=0, vjust=0.5,
# size=6, color="#00A3A8")
for (j in 1:nPeriod_max) {
Type_mat_per = Type_mat[NPeriod_mat == j]
Code_mat_per = Code_mat[NPeriod_mat == j]
Pthresold_mat_per = Pthresold_mat[NPeriod_mat == j]
TrendMean_mat_per = TrendMean_mat[NPeriod_mat == j]
DataMean_mat_per = DataMean_mat[NPeriod_mat == j]
Fill_mat_per = Fill_mat[NPeriod_mat == j]
Color_mat_per = Color_mat[NPeriod_mat == j]
Xtmp = as.integer(factor(as.character(Type_mat_per)))
Xc = j + (j - 1)*nbp*2
Xm = Xtmp + (j - 1)*nbp*2 + j
X = Xtmp + (j - 1)*nbp*2 + nbp + j
Y = as.integer(factor(Code_mat_per))
x = Xc - 0.4
xend = X[length(X)] + 0.25
y = height + 1
yend = height + 1
mat = mat +
annotate("segment",
x=x, xend=xend,
y=y, yend=yend,
color="grey40", size=0.35)
yt = y + 0.15
Start = trend_period[[j]][1]
End = trend_period[[j]][2]
periodName = bquote(bold('Période')~bold(.(as.character(j))))
# bquote(bold(.(Start))~'/'~bold(.(End)))
mat = mat +
annotate("text", x=x, y=yt,
label=periodName,
hjust=0, vjust=0.5,
size=3, color='grey40')
for (i in 1:length(X)) {
mat = mat +
gg_circle(r=0.45, xc=X[i], yc=Y[i],
fill=Fill_mat_per[i], color=Color_mat_per[i]) +
gg_circle(r=0.45, xc=Xm[i], yc=Y[i],
fill='white', color='grey40') +
gg_circle(r=0.45, xc=Xc, yc=Y[i],
fill='white', color='grey40')
}
for (i in 1:length(TrendMean_mat_per)) {
trendMean = TrendMean_mat_per[i]
trendC = round(trendMean*100, 2)
if (!is.na(Pthresold_mat_per[i])) {
Tcolor = 'white'
} else {
Tcolor = 'grey85'
}
dataMean = round(DataMean_mat_per[i], 2)
mat = mat +
annotate('text', x=X[i], y=Y[i],
label=trendC,
hjust=0.5, vjust=0.5,
size=3, color=Tcolor) +
annotate('text', x=Xm[i], y=Y[i],
label=dataMean,
hjust=0.5, vjust=0.5,
size=3, color='grey40')
}
mat = mat +
annotate('text', x=Xc, y=max(Y) + 0.85,
label=bquote(bold('Début')),
hjust=0.5, vjust=0.5,
size=3, color='grey20') +
annotate('text', x=Xc, y=max(Y) + 0.6,
label=bquote(bold('Fin')),
hjust=0.5, vjust=0.5,
size=3, color='grey20')
for (i in 1:nbp) {
type = list_df2plot[[i]]$type
mat = mat +
annotate('text', x=X[i], y=max(Y) + 0.7,
label=bquote(.(type)),
hjust=0.5, vjust=0.5,
size=3.5, color='grey20') +
annotate('text', x=Xm[i], y=max(Y) + 0.7,
label=bquote('µ'*.(type)),
hjust=0.5, vjust=0.5,
size=3.5, color='grey20')
}
}
for (i in 1:length(Code)) {
code = Code[i]
name = df_meta[df_meta$code == code,]$nom
ncharMax = 30
if (nchar(name) > ncharMax) {
name = paste(substr(name, 1, ncharMax), '...', sep='')
}
mat = mat +
annotate('text', x=0.3, y=i + 0.14,
label=bquote(bold(.(code))),
hjust=1, vjust=0.5,
size=3.5, color="#00A3A8") +
annotate('text', x=0.3, y=i - 0.14,
label=name,
hjust=1, vjust=0.5,
size=3.5, color="#00A3A8")
for (j in 1:nPeriod_max) {
Xc = j + (j - 1)*nbp*2
label = Periods_code[Code_code == code][[1]][j]
periodStart = substr(label, 1, 4)
periodEnd = substr(label, 8, 11)
mat = mat +
annotate('text', x=Xc, y=i + 0.13,
label=bquote(bold(.(periodStart))),
hjust=0.5, vjust=0.5,
size=3, color='grey40') +
annotate('text', x=Xc, y=i - 0.13,
label=bquote(bold(.(periodEnd))),
hjust=0.5, vjust=0.5,
size=3, color='grey40')
}
}
mat = mat +
coord_fixed() +
scale_x_continuous(limits=c(1 - rel(6),
width + rel(0.5)),
expand=c(0, 0)) +
scale_y_continuous(limits=c(1 - rel(0.5),
height + rel(1.5)),
expand=c(0, 0))
# Saving matrix plot
ggsave(plot=mat,
path=outdirTmp,
filename=paste(outnameTmp, '.pdf', sep=''),
width=29.7, height=21, units='cm', dpi=100)
}
}
map_panel = function (list_df2plot, df_meta, computer_data_path, fr_shpdir, fr_shpname, bs_shpdir=bs_shpdir, bs_shpname=bs_shpname, rv_shpdir, rv_shpname, outdirTmp) {
fr_shppath = file.path(computer_data_path, fr_shpdir, fr_shpname)
rv_shppath = file.path(computer_data_path, rv_shpdir, rv_shpname)
bs_shppath = file.path(computer_data_path, bs_shpdir, bs_shpname)
# France
fr_spdf = readOGR(dsn=fr_shppath, verbose=FALSE)
proj4string(fr_spdf) = CRS("+proj=longlat +ellps=WGS84")
# Trasnformation en Lambert93
france = spTransform(fr_spdf, CRS("+init=epsg:2154"))
df_france = tibble(fortify(france))
# Bassin hydrographique
bassin = readOGR(dsn=bs_shppath, verbose=FALSE)
df_bassin = tibble(fortify(bassin))
# Réseau hydrographique
# river = readOGR(dsn=rv_shppath, verbose=FALSE) ### trop long ###
# river = river[which(river$Classe == 1),]
# df_river = tibble(fortify(river))
nbp = length(list_df2plot)
# Get all different stations code # Get all different stations code
Code = levels(factor(df_meta$code)) Code = levels(factor(df_meta$code))
nCode = length(Code) nCode = length(Code)
df_trend = list_df2plot[[1]]$trend
df_trend = list_df2plot[[1]]$trend
nPeriod_max = 0 nPeriod_max = 0
for (code in Code) { for (code in Code) {
df_trend_code = df_trend[df_trend$code == code,] df_trend_code = df_trend[df_trend$code == code,]
Start = df_trend_code$period_start Start = df_trend_code$period_start
UStart = levels(factor(Start)) UStart = levels(factor(Start))
...@@ -680,7 +1118,7 @@ matrice_panel = function (list_df2plot, df_meta, trend_period) { ...@@ -680,7 +1118,7 @@ matrice_panel = function (list_df2plot, df_meta, trend_period) {
UEnd = levels(factor(End)) UEnd = levels(factor(End))
nPeriod = max(length(UStart), length(UEnd)) nPeriod = max(length(UStart), length(UEnd))
if (nPeriod > nPeriod_max) { if (nPeriod > nPeriod_max) {
nPeriod_max = nPeriod nPeriod_max = nPeriod
} }
...@@ -722,7 +1160,7 @@ matrice_panel = function (list_df2plot, df_meta, trend_period) { ...@@ -722,7 +1160,7 @@ matrice_panel = function (list_df2plot, df_meta, trend_period) {
} }
TrendMean_code = array(rep(1, nPeriod_max*nbp*nCode), TrendMean_code = array(rep(1, nPeriod_max*nbp*nCode),
dim=c(nPeriod_max, nbp, nCode)) dim=c(nPeriod_max, nbp, nCode))
for (j in 1:nPeriod_max) { for (j in 1:nPeriod_max) {
...@@ -765,309 +1203,46 @@ matrice_panel = function (list_df2plot, df_meta, trend_period) { ...@@ -765,309 +1203,46 @@ matrice_panel = function (list_df2plot, df_meta, trend_period) {
} }
minTrendMean = apply(TrendMean_code, c(1, 2), min, na.rm=TRUE) minTrendMean = apply(TrendMean_code, c(1, 2), min, na.rm=TRUE)
maxTrendMean = apply(TrendMean_code, c(1, 2), max, na.rm=TRUE) maxTrendMean = apply(TrendMean_code, c(1, 2), max, na.rm=TRUE)
Periods_mat = c()
NPeriod_mat = c()
Type_mat = list()
Code_mat = c()
Pthresold_mat = c()
TrendMean_mat = c()
DataMean_mat = c()
Fill_mat = c()
Color_mat = c()
for (j in 1:nPeriod_max) {
for (code in Code) {
for (i in 1:nbp) {
df_data = list_df2plot[[i]]$data
df_trend = list_df2plot[[i]]$trend
p_threshold = list_df2plot[[i]]$p_threshold
type = list_df2plot[[i]]$type
df_data_code = df_data[df_data$code == code,]
df_trend_code = df_trend[df_trend$code == code,]
Start = Start_code[Code_code == code][[1]][j]
End = End_code[Code_code == code][[1]][j]
Periods = Periods_code[Code_code == code][[1]][j]
df_data_code_per =
df_data_code[df_data_code$Date >= Start
& df_data_code$Date <= End,]
df_trend_code_per =
df_trend_code[df_trend_code$period_start == Start
& df_trend_code$period_end == End,]
Ntrend = nrow(df_trend_code_per)
if (Ntrend > 1) {
df_trend_code_per = df_trend_code_per[1,]
}
dataMean = mean(df_data_code_per$Qm3s, na.rm=TRUE)
trendMean = df_trend_code_per$trend / dataMean
if (df_trend_code_per$p <= p_threshold){
color_res = get_color(trendMean,
minTrendMean[j, i],
maxTrendMean[j, i],
palette_name='perso',
reverse=TRUE)
fill = color_res$color
color = 'white'
Pthresold = p_thresold
} else {
fill = 'white'
color = 'grey85'
Pthresold = NA
}
Periods_mat = append(Periods_mat, Periods)
NPeriod_mat = append(NPeriod_mat, j)
Type_mat = append(Type_mat, type)
Code_mat = append(Code_mat, code)
Pthresold_mat = append(Pthresold_mat, Pthresold)
TrendMean_mat = append(TrendMean_mat, trendMean)
DataMean_mat = append(DataMean_mat, dataMean)
Fill_mat = append(Fill_mat, fill)
Color_mat = append(Color_mat, color)
}
}
}
height = length(Code)
width = nbp * 2 * nPeriod_max + nPeriod_max
options(repr.plot.width=width, repr.plot.height=height)
mat = ggplot() + theme_ash +
theme(
panel.border=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank(),
axis.ticks.x=element_blank(),
axis.title.y=element_blank(),
)
# xt = -1
# yt = height + 1.75
# Title = bquote(bold(Territoire))
# mat = mat + for (j in 1:nbp) {
# annotate("text", x=xt, y=yt,
# label=Title,
# hjust=0, vjust=0.5,
# size=6, color="#00A3A8")
for (j in 1:nPeriod_max) {
Type_mat_per = Type_mat[NPeriod_mat == j]
Code_mat_per = Code_mat[NPeriod_mat == j]
Pthresold_mat_per = Pthresold_mat[NPeriod_mat == j]
TrendMean_mat_per = TrendMean_mat[NPeriod_mat == j]
DataMean_mat_per = DataMean_mat[NPeriod_mat == j]
Fill_mat_per = Fill_mat[NPeriod_mat == j]
Color_mat_per = Color_mat[NPeriod_mat == j]
Xtmp = as.integer(factor(as.character(Type_mat_per)))
Xc = j + (j - 1)*nbp*2
Xm = Xtmp + (j - 1)*nbp*2 + j
X = Xtmp + (j - 1)*nbp*2 + nbp + j
Y = as.integer(factor(Code_mat_per))
x = Xc - 0.4
xend = X[length(X)] + 0.25
y = height + 1
yend = height + 1
mat = mat +
annotate("segment",
x=x, xend=xend,
y=y, yend=yend,
color="grey40", size=0.35)
yt = y + 0.15 map = ggplot() + theme_void() +
Start = trend_period[[j]][1]
End = trend_period[[j]][2]
periodName = bquote(bold('Période')~bold(.(as.character(j))))
# bquote(bold(.(Start))~'/'~bold(.(End)))
mat = mat +
annotate("text", x=x, y=yt,
label=periodName,
hjust=0, vjust=0.5,
size=3, color='grey40')
for (i in 1:length(X)) { coord_fixed() +
mat = mat +
gg_circle(r=0.45, xc=X[i], yc=Y[i],
fill=Fill_mat_per[i], color=Color_mat_per[i]) +
gg_circle(r=0.45, xc=Xm[i], yc=Y[i],
fill='white', color='grey40') +
gg_circle(r=0.45, xc=Xc, yc=Y[i],
fill='white', color='grey40')
}
for (i in 1:length(TrendMean_mat_per)) {
trendMean = TrendMean_mat_per[i]
trendC = round(trendMean*100, 2)
if (!is.na(Pthresold_mat_per[i])) {
Tcolor = 'white'
} else {
Tcolor = 'grey85'
}
dataMean = round(DataMean_mat_per[i], 2) geom_polygon(data=df_france,
aes(x=long, y=lat, group=group),
mat = mat + color=NA, fill="grey97") +
annotate('text', x=X[i], y=Y[i],
label=trendC,
hjust=0.5, vjust=0.5,
size=3, color=Tcolor) +
annotate('text', x=Xm[i], y=Y[i],
label=dataMean,
hjust=0.5, vjust=0.5,
size=3, color='grey40')
}
mat = mat +
annotate('text', x=Xc, y=max(Y) + 0.85,
label=bquote(bold('Début')),
hjust=0.5, vjust=0.5,
size=3, color='grey20') +
annotate('text', x=Xc, y=max(Y) + 0.6,
label=bquote(bold('Fin')),
hjust=0.5, vjust=0.5,
size=3, color='grey20')
for (i in 1:nbp) {
type = list_df2plot[[i]]$type
mat = mat +
annotate('text', x=X[i], y=max(Y) + 0.7,
label=bquote(.(type)),
hjust=0.5, vjust=0.5,
size=3.5, color='grey20') +
annotate('text', x=Xm[i], y=max(Y) + 0.7,
label=bquote('µ'*.(type)),
hjust=0.5, vjust=0.5,
size=3.5, color='grey20')
}
}
for (i in 1:length(Code)) {
code = Code[i]
name = df_meta[df_meta$code == code,]$nom
ncharMax = 30
if (nchar(name) > ncharMax) {
name = paste(substr(name, 1, ncharMax), '...', sep='')
}
mat = mat +
annotate('text', x=0.3, y=i + 0.14,
label=bquote(bold(.(code))),
hjust=1, vjust=0.5,
size=3.5, color="#00A3A8") +
annotate('text', x=0.3, y=i - 0.14, # geom_path(data=df_river,
label=name, # aes(x=long, y=lat, group=group),
hjust=1, vjust=0.5, # color="grey85", size=0.15) +
size=3.5, color="#00A3A8")
geom_polygon(data=df_bassin,
aes(x=long, y=lat, group=group),
for (j in 1:nPeriod_max) { color="grey70", fill=NA, size=0.1) +
Xc = j + (j - 1)*nbp*2
label = Periods_code[Code_code == code][[1]][j] geom_polygon(data=df_france,
periodStart = substr(label, 1, 4) aes(x=long, y=lat, group=group),
periodEnd = substr(label, 8, 11) color="grey40", fill=NA, size=0.2)
mat = mat + # marker color="grey50"
annotate('text', x=Xc, y=i + 0.13,
label=bquote(bold(.(periodStart))), # for (code in Code) {
hjust=0.5, vjust=0.5,
size=3, color='grey40') + # }
annotate('text', x=Xc, y=i - 0.13,
label=bquote(bold(.(periodEnd))),
hjust=0.5, vjust=0.5,
size=3, color='grey40')
}
}
mat = mat +
coord_fixed() +
scale_x_continuous(limits=c(1 - rel(6),
width + rel(0.5)),
expand=c(0, 0)) +
scale_y_continuous(limits=c(1 - rel(0.5),
height + rel(1.5)),
expand=c(0, 0))
return (mat)
}
map_panel = function (computer_data_path, shpdir, fr_shpname, rv_shpname) {
fr_shppath = file.path(computer_data_path, shpdir, fr_shpname)
rv_shppath = file.path(computer_data_path, shpdir, rv_shpname)
# France
fr_spdf = readOGR(dsn=fr_shppath, verbose=FALSE)
proj4string(fr_spdf) = CRS("+proj=longlat +ellps=WGS84")
# Trasnformation en Lambert93
france = spTransform(fr_spdf, CRS("+init=epsg:2154"))
df_france = tibble(fortify(france))
# Réseau hydrographique
print('aaa')
river = readOGR(dsn=rv_shppath, verbose=FALSE)
print('bbb')
river = river[which(river$Classe == 1),]
print('ccc')
df_river = tibble(fortify(river))
print(df_river)
# map = ggplot() + theme_void() +
# geom_polygon(data=df_france, # Saving matrix plot
# aes(x=long, y=lat, group=group), ggsave(plot=map,
# color="grey40", fill="grey97", size=0.15) + path=outdirTmp,
filename='map.pdf',
# geom_line(data=df_river, width=29.7, height=21, units='cm', dpi=100)
# aes(x=long, y=lat, group=group), }
# color="grey70", size=0.25)
# marker color="grey50"
# Saving matrix plot
ggsave(plot=map,
filename='map.pdf',
width=10, height=10, units='cm', dpi=100)
return (map)
} }
......
...@@ -74,8 +74,13 @@ p_thresold = 0.1 #c(0.01, 0.05, 0.1) ...@@ -74,8 +74,13 @@ p_thresold = 0.1 #c(0.01, 0.05, 0.1)
### MAP ### ### MAP ###
shpdir = 'map' fr_shpdir = 'map/france'
fr_shpname = 'gadm36_FRA_0.shp' fr_shpname = 'gadm36_FRA_0.shp'
bs_shpdir = 'map/bassin'
bs_shpname = 'BassinHydrographique.shp'
rv_shpdir = 'map/river'
rv_shpname = 'CoursEau_FXX.shp' rv_shpname = 'CoursEau_FXX.shp'
...@@ -229,30 +234,36 @@ res_VCN10trend = get_VCN10trend(df_data, df_meta, ...@@ -229,30 +234,36 @@ res_VCN10trend = get_VCN10trend(df_data, df_meta,
# figdir=figdir, # figdir=figdir,
# filename_opt='time') # filename_opt='time')
# panels_layout(list(res_QAtrend$data, res_QMNAtrend$data, panels_layout(list(res_QAtrend$data, res_QMNAtrend$data,
# res_VCN10trend$data), res_VCN10trend$data),
# layout_matrix=c(1, 2, 3), layout_matrix=c(1, 2, 3),
# df_meta=df_meta, df_meta=df_meta,
# df_trend=list(res_QAtrend$trend, res_QMNAtrend$trend, df_trend=list(res_QAtrend$trend, res_QMNAtrend$trend,
# res_VCN10trend$trend), res_VCN10trend$trend),
# type=list(bquote(Q[A]), bquote(Q[MNA]), bquote(V[CN10])), type=list(bquote(Q[A]), bquote(Q[MNA]), bquote(V[CN10])),
# missRect=list(TRUE, TRUE, TRUE), missRect=list(TRUE, TRUE, TRUE),
# trend_period=trend_period, trend_period=trend_period,
# mean_period=mean_period, mean_period=mean_period,
# info_header=TRUE, info_header=TRUE,
# time_header=df_data, time_header=df_data,
# time_ratio=2, time_ratio=2,
# var_ratio=3, var_ratio=3,
# computer_data_path=computer_data_path, computer_data_path=computer_data_path,
# shpdir=shpdir, fr_shpdir=fr_shpdir,
# fr_shpname=fr_shpname, fr_shpname=fr_shpname,
# rv_shpname=rv_shpname, bs_shpdir=bs_shpdir,
# figdir=figdir, bs_shpname=bs_shpname,
# filename_opt='') rv_shpdir=rv_shpdir,
rv_shpname=rv_shpname,
figdir=figdir,
filename_opt='')
map_panel(computer_data_path, shpdir, fr_shpname, rv_shpname)
# map_panel(computer_data_path,
# fr_shpdir, fr_shpname,
# bs_shpdir, bs_shpname,
# rv_shpdir, rv_shpname)
### /!\ Removed 185 row(s) containing missing values (geom_path) -> remove NA ### ### /!\ Removed 185 row(s) containing missing values (geom_path) -> remove NA ###
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment