Commit 97807bf7 authored by Heraut Louis's avatar Heraut Louis
Browse files

Aes matrix

parent b27389a6
No related merge requests found
Showing with 170 additions and 100 deletions
+170 -100
...@@ -204,7 +204,9 @@ panels_layout = function (df_data, df_meta, layout_matrix, figdir='', filedir_op ...@@ -204,7 +204,9 @@ panels_layout = function (df_data, df_meta, layout_matrix, figdir='', filedir_op
} }
mat = matrice_panel(list_df2plot, df_meta) ### by 16
mat = matrice_panel(list_df2plot, df_meta, period)
# Saving matrix plot # Saving matrix plot
ggsave(plot=mat, ggsave(plot=mat,
......
...@@ -343,24 +343,10 @@ text_panel = function(code, df_meta) { ...@@ -343,24 +343,10 @@ text_panel = function(code, df_meta) {
matrice_panel = function (list_df2plot, df_meta) { matrice_panel = function (list_df2plot, df_meta, period) {
nbp = length(list_df2plot) nbp = length(list_df2plot)
minTrend = c()
maxTrend = c()
for (i in 1:nbp) {
df_trend = list_df2plot[[i]]$trend
p_threshold = list_df2plot[[i]]$p_threshold
okTrend = df_trend$trend[df_trend$p <= p_threshold]
minTrend[i] = min(okTrend, na.rm=TRUE)
maxTrend[i] = max(okTrend, na.rm=TRUE)
}
# 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)
...@@ -387,7 +373,7 @@ matrice_panel = function (list_df2plot, df_meta) { ...@@ -387,7 +373,7 @@ matrice_panel = function (list_df2plot, df_meta) {
nPeriod = max(length(UStart), length(UEnd)) nPeriod = max(length(UStart), length(UEnd))
Periods = c()#vector(mode='list', length=nPeriod) Periods = c()
for (i in 1:nPeriod) { for (i in 1:nPeriod) {
Periods = append(Periods, Periods = append(Periods,
...@@ -404,14 +390,60 @@ matrice_panel = function (list_df2plot, df_meta) { ...@@ -404,14 +390,60 @@ matrice_panel = function (list_df2plot, df_meta) {
} }
} }
# print(Code_code)
# print(Periods_code) 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() Periods_mat = c()
NPeriod_mat = c() NPeriod_mat = c()
Type_mat = list() Type_mat = list()
Code_mat = c() Code_mat = c()
Trend_mat = c() Pthresold_mat = c()
TrendMean_mat = c()
DataMean_mat = c()
Fill_mat = c() Fill_mat = c()
Color_mat = c() Color_mat = c()
...@@ -420,50 +452,56 @@ matrice_panel = function (list_df2plot, df_meta) { ...@@ -420,50 +452,56 @@ matrice_panel = function (list_df2plot, df_meta) {
for (code in Code) { for (code in Code) {
for (i in 1:nbp) { for (i in 1:nbp) {
df_data = list_df2plot[[i]]$data
df_trend = list_df2plot[[i]]$trend df_trend = list_df2plot[[i]]$trend
p_threshold = list_df2plot[[i]]$p_threshold p_threshold = list_df2plot[[i]]$p_threshold
type = list_df2plot[[i]]$type type = list_df2plot[[i]]$type
# print(code) df_data_code = df_data[df_data$code == code,]
df_trend_code = df_trend[df_trend$code == code,] df_trend_code = df_trend[df_trend$code == code,]
# print(df_trend_code)
# print(Code_code == code )
# print(Start_code)
Start = Start_code[Code_code == code][[1]][j] Start = Start_code[Code_code == code][[1]][j]
End = End_code[Code_code == code][[1]][j] End = End_code[Code_code == code][[1]][j]
Periods = Periods_code[Code_code == code][[1]][j] Periods = Periods_code[Code_code == code][[1]][j]
# print(Periods) df_data_code_per =
df_data_code[df_data_code$Date >= Start
& df_data_code$Date <= End,]
df_trend_code_per = df_trend_code_per =
df_trend_code[df_trend_code$period_start == Start df_trend_code[df_trend_code$period_start == Start
& df_trend_code$period_end == End,] & 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){ if (df_trend_code_per$p <= p_threshold){
color_res = get_color(df_trend_code_per$trend, color_res = get_color(trendMean,
minTrend[i], minTrendMean[j, i],
maxTrend[i], minTrendMean[j, i],
palette_name='perso', palette_name='perso',
reverse=FALSE) reverse=FALSE)
fill = color_res$color fill = color_res$color
color = 'white' color = 'white'
Pthresold = p_thresold
} else { } else {
fill = 'white' fill = 'white'
color = 'grey85' color = 'grey85'
Pthresold = NA
} }
# print(fill)
trend = df_trend_code_per$trend
Periods_mat = append(Periods_mat, Periods) Periods_mat = append(Periods_mat, Periods)
NPeriod_mat = append(NPeriod_mat, j) NPeriod_mat = append(NPeriod_mat, j)
Type_mat = append(Type_mat, type) Type_mat = append(Type_mat, type)
Code_mat = append(Code_mat, code) Code_mat = append(Code_mat, code)
Trend_mat = append(Trend_mat, trend) Pthresold_mat = append(Pthresold_mat, Pthresold)
TrendMean_mat = append(TrendMean_mat, trendMean)
DataMean_mat = append(DataMean_mat, dataMean)
Fill_mat = append(Fill_mat, fill) Fill_mat = append(Fill_mat, fill)
Color_mat = append(Color_mat, color) Color_mat = append(Color_mat, color)
} }
...@@ -473,9 +511,6 @@ matrice_panel = function (list_df2plot, df_meta) { ...@@ -473,9 +511,6 @@ matrice_panel = function (list_df2plot, df_meta) {
height = length(Code) height = length(Code)
width = nbp * 2 * nPeriod_max width = nbp * 2 * nPeriod_max
# print(height)
# print(width)
options(repr.plot.width=width, repr.plot.height=height) options(repr.plot.width=width, repr.plot.height=height)
mat = ggplot() + mat = ggplot() +
...@@ -488,11 +523,11 @@ matrice_panel = function (list_df2plot, df_meta) { ...@@ -488,11 +523,11 @@ matrice_panel = function (list_df2plot, df_meta) {
panel.grid.major.y=element_blank(), panel.grid.major.y=element_blank(),
panel.grid.major.x=element_blank(), panel.grid.major.x=element_blank(),
# axis.text.x=element_blank(), axis.text.x=element_blank(),
# axis.text.y=element_blank(), axis.text.y=element_blank(),
# axis.ticks.y=element_blank(), axis.ticks.y=element_blank(),
# axis.ticks.x=element_blank(), axis.ticks.x=element_blank(),
ggh4x.axis.ticks.length.minor=rel(0.5), ggh4x.axis.ticks.length.minor=rel(0.5),
axis.ticks.length=unit(1.5, 'mm'), axis.ticks.length=unit(1.5, 'mm'),
...@@ -509,93 +544,120 @@ matrice_panel = function (list_df2plot, df_meta) { ...@@ -509,93 +544,120 @@ matrice_panel = function (list_df2plot, df_meta) {
plot.margin=margin(5, 5, 5, 5, unit="mm"), plot.margin=margin(5, 5, 5, 5, unit="mm"),
) )
X = c(0) # 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) { for (j in 1:nPeriod_max) {
print(j)
Type_mat_per = Type_mat[NPeriod_mat == j] Type_mat_per = Type_mat[NPeriod_mat == j]
Code_mat_per = Code_mat[NPeriod_mat == j] Code_mat_per = Code_mat[NPeriod_mat == j]
Trend_mat_per = Trend_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] Fill_mat_per = Fill_mat[NPeriod_mat == j]
Color_mat_per = Color_mat[NPeriod_mat == j] Color_mat_per = Color_mat[NPeriod_mat == j]
Xtmp = as.integer(factor(as.character(Type_mat_per))) Xtmp = as.integer(factor(as.character(Type_mat_per)))
X = Xtmp + X[length(X)]
# print(X) Xm = Xtmp + (j - 1)*nbp*2
X = Xtmp + (j - 1)*nbp*2 + nbp
Y = as.integer(factor(Code_mat_per)) Y = as.integer(factor(Code_mat_per))
# print(Y) x = Xm[1] - 0.25
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)
xt = X[1] - 0.5
yt = y + 0.15
Start = period[[j]][1]
End = period[[j]][2]
periodName = bquote(bold(.(Start))~'/'~bold(.(End)))
mat = mat +
annotate("text", x=xt, y=yt,
label=periodName,
hjust=0.5, vjust=0.5,
size=3, color='grey40')
for (i in 1:length(X)) { for (i in 1:length(X)) {
mat = mat + mat = mat +
gg_circle(r=0.45, xc=X[i], yc=Y[i], gg_circle(r=0.45, xc=X[i], yc=Y[i],
fill=Fill_mat_per[i], color=Color_mat_per[i]) fill=Fill_mat_per[i], color=Color_mat_per[i]) +
}
for (i in 1:nbp) { gg_circle(r=0.45, xc=Xm[i], yc=Y[i],
type = list_df2plot[[i]]$type fill='white', color='grey40')
mat = mat +
annotate('text', x=i, y=max(Y) + 0.6,
label=bquote(.(type)),
hjust=0.5, vjust=0,
size=3.5, color='grey40')
} }
for (i in 1:length(Trend_mat_per)) { for (i in 1:length(TrendMean_mat_per)) {
trend = Trend_mat_per[i] trendMean = TrendMean_mat_per[i]
if (!is.na(trend)) { trendC = round(trendMean*100, 2)
power = get_power(trend)
dbrk = 10^power if (!is.na(Pthresold_mat_per[i])) {
trendN = round(trend / dbrk, 2) Tcolor = 'white'
trendC1 = as.character(trendN)
trendC2 = bquote('x '*10^{.(as.character(power))})
} else { } else {
trendC1 = '' Tcolor = 'grey85'
trendC2 = ''
} }
dataMean = round(DataMean_mat_per[i], 2)
mat = mat + mat = mat +
annotate('text', x=X[i], y=Y[i], annotate('text', x=X[i], y=Y[i],
label=trendC1, 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')
}
for (i in 1:nbp) {
type = list_df2plot[[i]]$type
mat = mat +
annotate('text', x=X[i], y=max(Y) + 0.6,
label=bquote(.(type)),
hjust=0.5, vjust=0, hjust=0.5, vjust=0,
size=3, color='white') + size=3.5, color='grey20') +
annotate('text', x=X[i], y=Y[i],
label=trendC2, annotate('text', x=Xm[i], y=max(Y) + 0.6,
hjust=0.5, vjust=1.3, label=bquote(.(type)*'b'),
size=2, color='white') hjust=0.5, vjust=0,
size=3.5, color='grey20')
} }
} }
for (i in 1:length(Code)) { for (i in 1:length(Code)) {
code = Code[i] code = Code[i]
name = df_meta[df_meta$code == code,]$name name = df_meta[df_meta$code == code,]$nom
print(name)
mat = mat + mat = mat +
annotate('text', x=-1, y=i, annotate('text', x=-1, y=i,
label=code, label=bquote(bold(.(code))),
hjust=0, vjust=0, hjust=0, vjust=-0.1,
size=3.5, color='grey40') + size=3.5, color="#00A3A8") +
annotate('text', x=-1, y=i, annotate('text', x=-1, y=i,
label=name, label=paste(substr(name, 1, 15), '...', sep=''),
hjust=0, vjust=1, hjust=0, vjust=1.1,
size=3.5, color='grey40') size=2.5, color="#00A3A8")
} }
# print(Y)
mat = mat +
annotate("segment",
x = width/2 + 0.5, xend = width/2 + 0.5,
y = 1 - 0.5, yend = height + 0.5,
color="grey85")
mat = mat + mat = mat +
...@@ -606,7 +668,7 @@ matrice_panel = function (list_df2plot, df_meta) { ...@@ -606,7 +668,7 @@ matrice_panel = function (list_df2plot, df_meta) {
expand=c(0, 0)) + expand=c(0, 0)) +
scale_y_continuous(limits=c(1 - rel(0.5), scale_y_continuous(limits=c(1 - rel(0.5),
height + rel(1)), height + rel(2)),
expand=c(0, 0)) expand=c(0, 0))
return (mat) return (mat)
......
...@@ -23,7 +23,7 @@ filedir = ...@@ -23,7 +23,7 @@ filedir =
### MANUAL SELECTION ### ### MANUAL SELECTION ###
# Name of the file that will be analysed from the AG directory # Name of the file that will be analysed from the AG directory
filename = filename =
# "" ""
# c( # c(
# "S2235610_HYDRO_QJM.txt", # "S2235610_HYDRO_QJM.txt",
...@@ -33,9 +33,9 @@ filename = ...@@ -33,9 +33,9 @@ filename =
# "A2250310_HYDRO_QJM.txt" # "A2250310_HYDRO_QJM.txt"
# ) # )
c("O3035210_HYDRO_QJM.txt", # c("O3035210_HYDRO_QJM.txt",
"O3011010_HYDRO_QJM.txt", # "O3011010_HYDRO_QJM.txt",
"O1442910_HYDRO_QJM.txt") # "O1442910_HYDRO_QJM.txt")
...@@ -45,8 +45,8 @@ AGlistdir = ...@@ -45,8 +45,8 @@ AGlistdir =
"" ""
AGlistname = AGlistname =
"" # ""
# "Liste-station_RRSE.docx" "Liste-station_RRSE.docx"
### NIVALE SELECTION ### ### NIVALE SELECTION ###
...@@ -126,6 +126,12 @@ if (AGlistname != ""){ ...@@ -126,6 +126,12 @@ if (AGlistname != ""){
filename = df_selec_AG[df_selec_AG$ok,]$filename filename = df_selec_AG[df_selec_AG$ok,]$filename
#####
filename = filename[1:16]
#####
# Extract metadata about selected stations # Extract metadata about selected stations
df_meta_AG = extract_meta(computer_data_path, filedir, filename) df_meta_AG = extract_meta(computer_data_path, filedir, filename)
......
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