diff --git a/plotting/layout.R b/plotting/layout.R index 69345c84c841e05fcc9c55947127320ce14b9da9..34bf77cbbb15b78f1d25bf5aee93a07dc36ed425 100644 --- a/plotting/layout.R +++ b/plotting/layout.R @@ -291,7 +291,7 @@ panels_layout = function (df_data, df_meta, layout_matrix, figdir='', filedir_op palette_name='perso', reverse=TRUE) - colortmp = color_res$color + colortmp = color_res } else { colortmp = paste('grey', grey, sep='') grey = grey - 10 diff --git a/plotting/panel.R b/plotting/panel.R index af5d6f2424b8e5aede18b7a0972d93ee7d23a4f4..fb911c31c099ad1fd1dc1d08714286ffc5a6b95b 100644 --- a/plotting/panel.R +++ b/plotting/panel.R @@ -887,7 +887,7 @@ matrice_panel = function (list_df2plot, df_meta, trend_period, slice=NULL, outdi palette_name='perso', reverse=TRUE) - fill = color_res$color + fill = color_res color = 'white' Pthresold = p_thresold } else { @@ -1354,12 +1354,17 @@ map_panel = function (list_df2plot, df_meta, computer_data_path, fr_shpdir, fr_s maxTrendMean[idPer, i], palette_name='perso', reverse=TRUE, - ncolor=ncolor, - nbTick=nbTick) + ncolor=ncolor) + + palette_res = get_palette(minTrendMean[idPer, i], + maxTrendMean[idPer, i], + palette_name='perso', + reverse=TRUE, + ncolor=ncolor, + nbTick=nbTick) if (df_trend_code_per$p <= p_threshold){ - filltmp = color_res$color - palette = color_res$palette + filltmp = color_res if (trendMean >= 0) { shapetmp = 24 @@ -1368,8 +1373,7 @@ map_panel = function (list_df2plot, df_meta, computer_data_path, fr_shpdir, fr_s } } else { - filltmp = color_res$color - palette = color_res$palette + filltmp = color_res shapetmp = 21 } @@ -1412,14 +1416,14 @@ map_panel = function (list_df2plot, df_meta, computer_data_path, fr_shpdir, fr_s color='grey70', fill='grey70') } - idTick = color_res$idTick - labTick = color_res$labTick - colTick = color_res$colTick + posTick = palette_res$posTick + labTick = palette_res$labTick + colTick = palette_res$colTick - nbTickmod = length(idTick) + nbTickmod = length(posTick) valNorm = nbTickmod * 10 - ytick = idTick / max(idTick) * valNorm + ytick = posTick / max(posTick) * valNorm labTick = as.character(round(labTick*100, 2)) @@ -1513,20 +1517,37 @@ map_panel = function (list_df2plot, df_meta, computer_data_path, fr_shpdir, fr_s label=bquote(bold("Baisse significative à 10%")), hjust=0, vjust=0.5, size=3, color='grey40') - + # print(minTrendMean[idPer, i]) + # print(maxTrendMean[idPer, i]) + yTrend = (trend - minTrendMean[idPer, i]) / (maxTrendMean[idPer, i] - minTrendMean[idPer, i]) * valNorm - xTrend = rnorm(length(yTrend), mean=2, sd=0.1) + xTrend = rnorm(length(yTrend), mean=1.75, sd=0.1) plot_trend = tibble(xTrend=xTrend, yTrend=yTrend) pal = pal + geom_point(data=plot_trend, aes(x=xTrend, y=yTrend), - shape=21, size=1, - color="grey40", fill="grey10") + # shape=21, size=1, + # color="grey20", fill="grey20") + alpha=0.4) + + pal = pal + + geom_segment(aes(x=2.7, y=valNorm*0.75, + xend=2.7, yend=valNorm*0.25), + color='grey50', size=0.3, + arrow=arrow(length=unit(2, "mm"))) + + + annotate('text', + x=2.8, y=valNorm*0.5, + label= "Plus sec", + angle=90, + hjust=0.5, vjust=1, + size=3, color='grey50') + pal = pal + @@ -1537,9 +1558,6 @@ map_panel = function (list_df2plot, df_meta, computer_data_path, fr_shpdir, fr_s expand=c(0, 0)) + theme(plot.margin=margin(t=0, r=5, b=5, l=0, unit="mm")) - - - Map = list(map, title, pal) @@ -1855,7 +1873,229 @@ cumulative = function (data_bin, df_meta, dyear=10, figdir='', filedir_opt='') { } -get_color = function (value, min, max, ncolor=256, palette_name='perso', reverse=FALSE, nbTick=10) { +# get_color = function (value, min, max, ncolor=256, palette_name='perso', reverse=FALSE, nbTick=10) { + +# if (palette_name == 'perso') { +# colorList = c('#0f3b57', +# '#1d7881', +# '#80c4a9', +# '#e2dac6', #mid +# '#fadfad', +# '#d08363', +# '#7e392f') +# } else { +# colorList = brewer.pal(11, palette_name) +# } + +# nSample = length(colorList) + +# palette = colorRampPalette(colorList)(ncolor) +# Sample_hot = 1:(as.integer(nSample/2)+1) +# Sample_cold = (as.integer(nSample/2)+1):nSample + +# palette_hot = colorRampPalette(colorList[Sample_hot])(ncolor) +# palette_cold = colorRampPalette(colorList[Sample_cold])(ncolor) + +# if (reverse) { +# palette = rev(palette) +# palette_hot = rev(palette_hot) +# palette_cold = rev(palette_cold) +# } + +# if (value < 0) { +# idNorm = (value - min) / (0 - min) +# id = round(idNorm*(ncolor - 1) + 1, 0) +# color = palette_cold[id] +# } else { +# idNorm = (value - 0) / (max - 0) +# id = round(idNorm*(ncolor - 1) + 1, 0) +# color = palette_hot[id] +# } + +# if (min < 0 & max < 0) { +# paletteShow = palette_cold +# idTick = c() +# for (i in 1:nbTick) { +# id = round((ncolor-1)/(nbTick-1)*(i-1)) + 1 +# idTick = c(idTick, id) +# } +# labTick = seq(min, max, length.out=nbTick) +# colTick = paletteShow[idTick] + +# } else if (min > 0 & max > 0) { +# paletteShow = palette_hot +# idTick = c() +# for (i in 1:nbTick) { +# id = round((ncolor-1)/(nbTick-1)*(i-1)) + 1 +# idTick = c(idTick, id) +# } +# labTick = seq(min, max, length.out=nbTick) +# colTick = paletteShow[idTick] + +# } else { +# paletteShow = palette +# nbSemiTick = round(nbTick/2) + 1 + +# idSemiTick = c() +# for (i in 1:nbSemiTick) { +# id = round((ncolor-1)/(nbSemiTick-1)*(i-1)) + 1 +# idSemiTick = c(idSemiTick, id) +# } + +# labTick_hot = seq(0, max, length.out=nbSemiTick) +# labTick_cold = seq(min, 0, length.out=nbSemiTick) + +# colTick_hot = palette_hot[idSemiTick] +# colTick_cold = palette_cold[idSemiTick] + +# idTick = as.integer(seq(1, ncolor, length.out=nbTick+1)) +# labTick = c(labTick_cold, labTick_hot[-1]) +# colTick = c(colTick_cold, colTick_hot[-1]) +# } + +# return(list(color=color, palette=paletteShow, +# idTick=idTick, labTick=labTick, colTick=colTick)) +# } + + + + + +# get_color = function (value, min, max, ncolor=256, palette_name='perso', reverse=FALSE, nbTick=10) { + + # if (palette_name == 'perso') { + # colorList = c('#0f3b57', + # '#1d7881', + # '#80c4a9', + # '#e2dac6', #mid + # '#fadfad', + # '#d08363', + # '#7e392f') + # } else { + # colorList = brewer.pal(11, palette_name) + # } + + # nSample = length(colorList) + + # palette = colorRampPalette(colorList)(ncolor) + # Sample_hot = 1:(as.integer(nSample/2)+1) + # Sample_cold = (as.integer(nSample/2)+1):nSample + + # palette_hot = colorRampPalette(colorList[Sample_hot])(ncolor) + # palette_cold = colorRampPalette(colorList[Sample_cold])(ncolor) + + # if (reverse) { + # palette = rev(palette) + # palette_hot = rev(palette_hot) + # palette_cold = rev(palette_cold) + # } + + # if (value < 0) { + # idNorm = (value - min) / (0 - min) + # id = round(idNorm*(ncolor - 1) + 1, 0) + # color = palette_cold[id] + # } else { + # idNorm = (value - 0) / (max - 0) + # id = round(idNorm*(ncolor - 1) + 1, 0) + # color = palette_hot[id] + # } + + # if (min < 0 & max < 0) { + # paletteShow = palette_cold + # idTick = c() + # for (i in 1:nbTick) { + # id = round((ncolor-1)/(nbTick-1)*(i-1)) + 1 + # idTick = c(idTick, id) + # } + # labTick = seq(min, max, length.out=nbTick) + # colTick = paletteShow[idTick] + + # } else if (min > 0 & max > 0) { + # paletteShow = palette_hot + # idTick = c() + # for (i in 1:nbTick) { + # id = round((ncolor-1)/(nbTick-1)*(i-1)) + 1 + # idTick = c(idTick, id) + # } + # labTick = seq(min, max, length.out=nbTick) + # colTick = paletteShow[idTick] + + # } else { + # paletteShow = palette + + # nbTick_hot = round(max / (max - min) * nbTick) + 1 + # nbTick_cold = round(-min / (max - min) * nbTick) + 1 + + # print(nbTick_hot) + # print(nbTick_cold) + # print("") + + # idTick_hot = c() + # for (i in 1:nbTick_hot) { + # id = round((ncolor-1)/(nbTick_hot-1)*(i-1)) + 1 + # idTick_hot = c(idTick_hot, id) + # } + + # idTick_cold = c() + # for (i in 1:nbTick_cold) { + # id = round((ncolor-1)/(nbTick_cold-1)*(i-1)) + 1 + # idTick_cold = c(idTick_cold, id) + # } + + # print(idTick_hot) + # print(idTick_cold) + # print("") + + # labTick_hot = c() + # for (i in 1:nbTick_hot) { + # lab = (i-1)/(nbTick_hot-1) * max + # labTick_hot = c(labTick_hot, lab) + # } + + # labTick_cold = c() + # for (i in 1:nbTick_cold) { + # lab = (i-1)/(nbTick_cold-1) * min + # labTick_cold = c(labTick_cold, lab) + # } + + # print(min) + # print(max) + # print("") + + # print(labTick_hot) + # print(labTick_cold) + # print("") + + # colTick_hot = palette_hot[idTick_hot] + # colTick_cold = palette_cold[idTick_cold] + + # print(colTick_hot) + # print(colTick_cold) + # print("") + + + + # idTick = c(-rev(idTick_cold), idTick_hot[-1]) + # idTick = idTick - min(idTick) + # idTick = idTick / max(idTick) + + + + # labTick = c(rev(labTick_cold), labTick_hot[-1]) + # colTick = c(colTick_cold, colTick_hot[-1]) + + # print(idTick) + # print(labTick) + # print(colTick) + # print("") + # print("") + # } + + # return(list(color=color, palette=paletteShow, + # idTick=idTick, labTick=labTick, colTick=colTick)) +# } + +get_color = function (value, min, max, ncolor=256, palette_name='perso', reverse=FALSE) { if (palette_name == 'perso') { colorList = c('#0f3b57', @@ -1892,54 +2132,62 @@ get_color = function (value, min, max, ncolor=256, palette_name='perso', reverse idNorm = (value - 0) / (max - 0) id = round(idNorm*(ncolor - 1) + 1, 0) color = palette_hot[id] - } - - if (min < 0 & max < 0) { - paletteShow = palette_cold - idTick = c() - for (i in 1:nbTick) { - id = round((ncolor-1)/(nbTick-1)*(i-1)) + 1 - idTick = c(idTick, id) - } - labTick = seq(min, max, length.out=nbTick) - colTick = paletteShow[idTick] - - } else if (min > 0 & max > 0) { - paletteShow = palette_hot - idTick = c() - for (i in 1:nbTick) { - id = round((ncolor-1)/(nbTick-1)*(i-1)) + 1 - idTick = c(idTick, id) - } - labTick = seq(min, max, length.out=nbTick) - colTick = paletteShow[idTick] - + } + + return(color) +} + + +get_palette = function (min, max, ncolor=256, palette_name='perso', reverse=FALSE, nbTick=10) { + + if (palette_name == 'perso') { + colorList = c('#0f3b57', + '#1d7881', + '#80c4a9', + '#e2dac6', #mid + '#fadfad', + '#d08363', + '#7e392f') } else { - paletteShow = palette - nbSemiTick = round(nbTick/2) + 1 + colorList = brewer.pal(11, palette_name) + } + + nSample = length(colorList) + + palette = colorRampPalette(colorList)(ncolor) + Sample_hot = 1:(as.integer(nSample/2)+1) + Sample_cold = (as.integer(nSample/2)+1):nSample - idSemiTick = c() - for (i in 1:nbSemiTick) { - id = round((ncolor-1)/(nbSemiTick-1)*(i-1)) + 1 - idSemiTick = c(idSemiTick, id) - } - - labTick_hot = seq(0, max, length.out=nbSemiTick) - labTick_cold = seq(min, 0, length.out=nbSemiTick) + palette_hot = colorRampPalette(colorList[Sample_hot])(ncolor) + palette_cold = colorRampPalette(colorList[Sample_cold])(ncolor) - colTick_hot = palette_hot[idSemiTick] - colTick_cold = palette_cold[idSemiTick] + if (reverse) { + palette = rev(palette) + palette_hot = rev(palette_hot) + palette_cold = rev(palette_cold) + } - idTick = as.integer(seq(1, ncolor, length.out=nbTick+1)) - labTick = c(labTick_cold, labTick_hot[-1]) - colTick = c(colTick_cold, colTick_hot[-1]) + posTick = seq(0, 1, length.out=nbTick) + + labTick = c() + colTick = c() + for (i in 1:nbTick) { + lab = (i-1)/(nbTick-1) * (max - min) + min + labTick = c(labTick, lab) + col = get_color(lab, min=min, max=max, + ncolor=ncolor, + palette_name=palette_name, + reverse=reverse) + colTick = c(colTick, col) } - - return(list(color=color, palette=paletteShow, - idTick=idTick, labTick=labTick, colTick=colTick)) + + return(list(palette=paletteShow, posTick=posTick, + labTick=labTick, colTick=colTick)) } + + void = ggplot() + geom_blank(aes(1,1)) + theme( plot.background = element_blank(), diff --git a/script.R b/script.R index 2ca28638ed3ad8027203eca4d6f086f8d724c6a5..323c222d3d7088623eefe9e44133e60a04145d60 100644 --- a/script.R +++ b/script.R @@ -22,19 +22,19 @@ filedir = ### MANUAL SELECTION ### # Name of the file that will be analysed from the AG directory filename = - # "" + "" # c( # "S2235610_HYDRO_QJM.txt", # "P1712910_HYDRO_QJM.txt", # "P0885010_HYDRO_QJM.txt", # "O5055010_HYDRO_QJM.txt", - # "A2250310_HYDRO_QJM.txt" + # "Q7002910_HYDRO_QJM.txt" # ) - c("S4214010_HYDRO_QJM.txt", - "O0384010_HYDRO_QJM.txt", - "Q7002910_HYDRO_QJM.txt") + # c("S4214010_HYDRO_QJM.txt", + # "O0384010_HYDRO_QJM.txt", + # "Q7002910_HYDRO_QJM.txt") @@ -44,8 +44,8 @@ AGlistdir = "" AGlistname = - "" - # "Liste-station_RRSE.docx" + # "" + "Liste-station_RRSE.docx" ### NIVALE SELECTION ###