diff --git a/plotting/layout.R b/plotting/layout.R
index d8f671e800ce2a47f411655620f57f2b120e5665..fcb7b4a2a7a54913089f954644ad7d47f2b25c97 100644
--- a/plotting/layout.R
+++ b/plotting/layout.R
@@ -89,6 +89,9 @@ panels_layout = function (df_data, df_meta, layout_matrix, figdir='', filedir_op
     outdirTmp = file.path(outdir, 'tmp')
     if (!(file.exists(outdirTmp))) {
         dir.create(outdirTmp)
+    } else {
+        unlink(outdirTmp, recursive=TRUE)
+        dir.create(outdirTmp)
     }
 
     # Get all different stations code
@@ -204,19 +207,44 @@ panels_layout = function (df_data, df_meta, layout_matrix, figdir='', filedir_op
 
     }
 
-    ### by 16
+    # By
+    slice = 12 ##
+    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
+        
 
-    mat = matrice_panel(list_df2plot, df_meta, period)
+        for (j in 1:nbp) {
+            df_datatmp = list_df2plot[[j]]$data
+            df_trendtmp = list_df2plot[[j]]$trend
 
-    # Saving matrix plot
-    ggsave(plot=mat, 
-           path=outdirTmp,
-           filename=paste('matrix', '.pdf', sep=''),
-           width=21, height=29.7, units='cm', dpi=100)
+            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, 
+                            period)
+
+        # Saving matrix plot
+        ggsave(plot=mat, 
+               path=outdirTmp,
+               filename=paste('matrix_', i, '.pdf', sep=''),
+               width=29.7, height=21, units='cm', dpi=100)
+        
+    }
 
     # PDF combine
     pdf_combine(input=file.path(outdirTmp, list.files(outdirTmp)),
                 output=file.path(outdir, outfile))
-    unlink(outdirTmp, recursive=TRUE)
+    # unlink(outdirTmp, recursive=TRUE)
 
 } 
diff --git a/plotting/panel.R b/plotting/panel.R
index 33e063e02a243688635483350d36de057816fa3b..88c470a37654c0bd642604b5e82eab294547cde6 100644
--- a/plotting/panel.R
+++ b/plotting/panel.R
@@ -221,7 +221,14 @@ time_panel = function (df_data_code, df_trend_code, type, p_threshold=0.1, missR
                 y = gpct(100, codeQ, ref=0) - (ii-1)*dy
 
                 xt = xend + gpct(1, codeDate)
-                label = bquote(bold(.(format(df_trend_code$trend, scientific=TRUE, digits=3)))~'['*m^{3}*'.'*s^{-1}*'.'*an^{-1}*']')
+
+                trend = df_trend_code_per$trend
+                power = power = get_power(trend) 
+                powerC = as.character(power)
+                brk = 10^power 
+                trendC = as.character(round(trend / brk, 2))
+
+                label = bquote(bold(.(trendC)~'x'~'10'^{.(powerC)})~'['*m^{3}*'.'*s^{-1}*'.'*an^{-1}*']')
     
                 p = p +
                     annotate("segment",
@@ -278,28 +285,42 @@ text_panel = function(code, df_meta) {
 
     text3 = paste(
         "<b>",
-        "Superficie : ", df_meta_code$surface_km2_IN, 
-        ' (', df_meta_code$surface_km2_BH, ')', "  [km<sup>2</sup>] <br>",
-        "X = ", df_meta_code$L93X_m_IN, 
-        ' (', df_meta_code$L93X_m_BH, ')', "  [m ; Lambert 93]", 
+        "Superficie : ", df_meta_code$surface_km2_BH, "  [km<sup>2</sup>] <br>",
+        "X = ", df_meta_code$L93X_m_BH, "  [m ; Lambert 93]", 
         "</b>",
         sep='')
         
     text4 = paste(
         "<b>",
-        "Altitude : ", df_meta_code$altitude_m_IN, 
-        ' (', df_meta_code$altitude_m_BH, ')', "  [m]<br>",
-        "Y = ", df_meta_code$L93Y_m_IN, 
-        ' (', df_meta_code$L93Y_m_BH, ')', "  [m ; Lambert 93]",
+        "Altitude : ", df_meta_code$altitude_m_BH, "  [m]<br>",
+        "Y = ", df_meta_code$L93Y_m_BH, "  [m ; Lambert 93]",
         "</b>",
         sep='')
 
-    text5 = paste(
-        "<b>",
-        "INRAE (Banque Hydro)<br>",
-        "INRAE (Banque Hydro)",
-        "</b>",
-        sep='')
+    # text3 = paste(
+    #     "<b>",
+    #     "Superficie : ", df_meta_code$surface_km2_IN, 
+    #     ' (', df_meta_code$surface_km2_BH, ')', "  [km<sup>2</sup>] <br>",
+    #     "X = ", df_meta_code$L93X_m_IN, 
+    #     ' (', df_meta_code$L93X_m_BH, ')', "  [m ; Lambert 93]", 
+    #     "</b>",
+    #     sep='')
+        
+    # text4 = paste(
+    #     "<b>",
+    #     "Altitude : ", df_meta_code$altitude_m_IN, 
+    #     ' (', df_meta_code$altitude_m_BH, ')', "  [m]<br>",
+    #     "Y = ", df_meta_code$L93Y_m_IN, 
+    #     ' (', df_meta_code$L93Y_m_BH, ')', "  [m ; Lambert 93]",
+    #     "</b>",
+    #     sep='')
+
+    # text5 = paste(
+    #     "<b>",
+    #     "INRAE (Banque Hydro)<br>",
+    #     "INRAE (Banque Hydro)",
+    #     "</b>",
+    #     sep='')
 
     gtext1 = richtext_grob(text1,
                            x=0, y=1,
@@ -325,17 +346,17 @@ text_panel = function(code, df_meta) {
                            hjust=0, vjust=1,
                            gp=gpar(col="grey20", fontsize=9))
 
-    gtext5 = richtext_grob(text5,
-                           x=0, y=1,
-                           margin=unit(c(t=0, r=5, b=5, l=5), "mm"),
-                           hjust=0, vjust=1,
-                           gp=gpar(col="grey20", fontsize=9))
+    # gtext5 = richtext_grob(text5,
+                           # x=0, y=1,
+                           # margin=unit(c(t=0, r=5, b=5, l=5), "mm"),
+                           # hjust=0, vjust=1,
+                           # gp=gpar(col="grey20", fontsize=9))
     
     gtext_merge = grid.arrange(grobs=list(gtext1, gtext2, gtext3, 
-                                          gtext4, gtext5), 
+                                          gtext4),#, gtext5), 
                                layout_matrix=matrix(c(1, 1, 1,
                                                       2, 2, 2,
-                                                      3, 4, 5), 
+                                                      3, 4, 5),
                                                     nrow=3, 
                                                     byrow=TRUE))
     return(gtext_merge)
@@ -351,14 +372,31 @@ matrice_panel = function (list_df2plot, df_meta, period) {
     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)
 
-    df_trend = list_df2plot[[1]]$trend
-
     for (j in 1:nCode) {
         
         code = Code[j]
@@ -375,22 +413,20 @@ matrice_panel = function (list_df2plot, df_meta, period) {
 
         Periods = c()
 
-            for (i in 1:nPeriod) {
-                Periods = append(Periods, 
-                                 paste(Start[i], End[i], sep=' / '))
-            }
+        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
         
-        if (nPeriod > nPeriod_max) {
-            nPeriod_max = nPeriod
-        }
     }
 
-
     TrendMean_code = array(rep(1, nPeriod_max*nbp*nCode),
                               dim=c(nPeriod_max, nbp, nCode))
 
@@ -509,7 +545,7 @@ matrice_panel = function (list_df2plot, df_meta, period) {
     }
 
     height = length(Code)
-    width = nbp * 2 * nPeriod_max
+    width = nbp * 2 * nPeriod_max + nPeriod_max
 
     options(repr.plot.width=width, repr.plot.height=height)
     
@@ -566,12 +602,13 @@ matrice_panel = function (list_df2plot, df_meta, period) {
 
         Xtmp = as.integer(factor(as.character(Type_mat_per)))
 
-        Xm = Xtmp + (j - 1)*nbp*2
-        X = Xtmp + (j - 1)*nbp*2 + nbp
+        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 = Xm[1] - 0.25
+        x = Xc - 0.4
         xend = X[length(X)] + 0.25
         y = height + 1
         yend = height + 1
@@ -582,25 +619,29 @@ matrice_panel = function (list_df2plot, df_meta, period) {
                      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)))
+        periodName = bquote(bold('Période')~bold(.(as.character(j))))
+            # bquote(bold(.(Start))~'/'~bold(.(End)))
 
         mat = mat +
-            annotate("text", x=xt, y=yt,
+            annotate("text", x=x, y=yt,
                      label=periodName,
-                     hjust=0.5, vjust=0.5, 
+                     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')
+                          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)) {
@@ -627,17 +668,28 @@ matrice_panel = function (list_df2plot, df_meta, period) {
                          size=3, color='grey40')
         }
 
+        mat = mat +
+            annotate('text', x=Xc, y=max(Y) + 0.8,
+                     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.6,
+                annotate('text', x=X[i], y=max(Y) + 0.7,
                          label=bquote(.(type)),
-                         hjust=0.5, vjust=0, 
+                         hjust=0.5, vjust=0.5, 
                          size=3.5, color='grey20') +
                 
-                annotate('text', x=Xm[i], y=max(Y) + 0.6,
-                         label=bquote(.(type)*'b'),
-                         hjust=0.5, vjust=0, 
+                annotate('text', x=Xm[i], y=max(Y) + 0.7,
+                         label=bquote('µ'*.(type)),
+                         hjust=0.5, vjust=0.5, 
                          size=3.5, color='grey20')  
         }
     }
@@ -646,29 +698,62 @@ matrice_panel = function (list_df2plot, df_meta, period) {
 
         code = Code[i]
         name = df_meta[df_meta$code == code,]$nom
+        ncharMax = 30
+        if (nchar(name) > ncharMax) {
+            name = paste(substr(name, 1, ncharMax), '...', sep='')
+        }
+        label = bquote(.(name)~'-'~bold(.(code)))
+        # period_code = Periods_code[[i]]
+        # nPeriod_code = length(period_code)
 
+        # dy = 0.17
+        # shift = as.integer((nPeriod_code + 1) / 2) * dy ### not ok        
         mat = mat +
-            annotate('text', x=-1, y=i,
-                     label=bquote(bold(.(code))),
-                     hjust=0, vjust=-0.1, 
-                     size=3.5, color="#00A3A8") + 
-
-            annotate('text', x=-1, y=i,
-                     label=paste(substr(name, 1, 15), '...', sep=''),
-                     hjust=0, vjust=1.1, 
-                     size=2.5, color="#00A3A8")   
+            annotate('text', x=0.3, y=i,
+                     label=label,
+                     hjust=1, vjust=0.5, 
+                     size=3.5, color="#00A3A8")
+
+        # for (j in 1:nPeriod_code) {
+            # periodj = bquote('Période'~.(j)~':'~.(period_code[j]))
+
+            # mat = mat +
+                # annotate('text', x=0.3, y=i + shift - dy*j,
+                         # label=periodj,
+                         # hjust=1, vjust=0.5, 
+                         # size=3, 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.1,
+                         label=bquote(bold(.(periodStart))),
+                         hjust=0.5, vjust=0.5, 
+                         size=3, color='grey40') + 
+                
+                annotate('text', x=Xc, y=i - 0.1,
+                         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(2), 
+    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(2)),
+                                height + rel(1.25)),
                        expand=c(0, 0))
     
     return (mat)
diff --git a/processing/format.R b/processing/format.R
index e60138773eedff650f86051c4dbec10f71bc0b6c..21d6c928c6480bf9d607995025d1d5b17e2f7329 100644
--- a/processing/format.R
+++ b/processing/format.R
@@ -2,38 +2,44 @@
 library(dplyr)
 
 
-join = function (df_data_BH, df_data_NV, df_meta_BH, df_meta_NV) {
+join = function (df_data_AG, df_data_NV, df_meta_AG, df_meta_NV) {
 
-    if (!is.null(df_data_NV) & !is.null(df_data_BH)) {
+    if (!is.null(df_data_NV) & !is.null(df_data_AG)) {
 
         # Get the station in common
-        common = levels(factor(df_meta_NV[df_meta_NV$code %in% df_meta_BH$code,]$code)) 
+        common = levels(factor(df_meta_NV[df_meta_NV$code %in% df_meta_AG$code,]$code)) 
         # Get the Nv station to add
-        NVadd = levels(factor(df_meta_NV[!(df_meta_NV$code %in% df_meta_BH$code),]$code))
+        NVadd = levels(factor(df_meta_NV[!(df_meta_NV$code %in% df_meta_AG$code),]$code))
 
         # Select only the NV meta to add
         df_meta_NVadd = df_meta_NV[df_meta_NV$code %in% NVadd,]
-        # Join NV data to BH data
-        df_meta = full_join(df_meta_BH, df_meta_NVadd, by=c("code", "nom", "L93X", "L93Y", "surface_km2", "file_path"))
+
+        df_meta_AG$source = 'AG'
+        df_meta_NVadd$source = 'NV'
+        
+        # Join NV data to AG data
+        df_meta = full_join(df_meta_AG, df_meta_NVadd)
 
         # Select only the NV data to add
         df_data_NVadd = df_data_NV[df_data_NV$code %in% NVadd,]
-        # Join NV meta to BH meta
-        df_data = full_join(df_data_BH, df_data_NVadd, by=c("Date", "Qm3s", "code"))
-
-    } else if (is.null(df_data_NV) & !is.null(df_data_BH)) {
-        df_meta = df_meta_BH
-        df_data = df_data_BH
-        df_data_NVadd = NULL
-    } else if (!is.null(df_data_NV) & is.null(df_data_BH)) {
+        # Join NV meta to AG meta
+        df_data = full_join(df_data_AG, df_data_NVadd)
+
+    } else if (is.null(df_data_NV) & !is.null(df_data_AG)) {
+        df_meta_AG$source = 'AG'
+        df_meta = df_meta_AG
+        df_data = df_data_AG
+
+    } else if (!is.null(df_data_NV) & is.null(df_data_AG)) {
+        df_meta_NV$source = 'NV'
         df_meta = df_meta_NV
         df_data = df_data_NV
-        df_data_NVadd = df_data_NV
+
     } else {
         stop('No data')
     }
     
-    return (list(data=df_data, meta=df_meta, NVadd=df_data_NVadd))
+    return (list(data=df_data, meta=df_meta))
 }
 
 
diff --git a/script.R b/script.R
index 5702abfdf59546765c8bdfa8f3e9166bf49e81f3..1263530e7bba5ff8e063b798ba1f81ba599e9fdd 100644
--- a/script.R
+++ b/script.R
@@ -128,7 +128,7 @@ if (AGlistname != ""){
 
 
     #####
-    filename = filename[1:16]
+    # filename = filename[(1+30):(16+30)]
     #####
 
 
@@ -149,6 +149,12 @@ if (NVlistname != ""){
 
     filename = df_selec_NV[df_selec_NV$ok,]$filename
 
+
+    #####
+    # filename = filename[(1+20):(16+20)]
+    #####
+
+
     # Extract metadata about selected stations
     df_meta_NV = extract_meta(computer_data_path, filedir, filename)