From 8d1d056ee1ccb05ef3b736d9520efd6a27e9d0c0 Mon Sep 17 00:00:00 2001
From: unknown <olivier.delaigue@ANPI1430.antony.irstea.priv>
Date: Fri, 7 Apr 2017 11:31:31 +0200
Subject: [PATCH] v1.0.6.16 bug fixed in plot.OutputsModel when there is no
 common data to plot the cumulative frequency or the correlation QQ

---
 DESCRIPTION           |   4 +-
 R/plot.OutputsModel.R | 111 ++++++++++++++++++++++++------------------
 2 files changed, 65 insertions(+), 50 deletions(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index bb5a0380..9d084f71 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,8 +1,8 @@
 Package: airGR
 Type: Package
 Title: Suite of GR Hydrological Models for Precipitation-Runoff Modelling
-Version: 1.0.6.15
-Date: 2017-04-05
+Version: 1.0.6.16
+Date: 2017-04-07
 Authors@R: c(
   person("Laurent", "Coron", role = c("aut", "trl")),
   person("Charles", "Perrin", role = c("aut", "ths")),
diff --git a/R/plot.OutputsModel.R b/R/plot.OutputsModel.R
index a8c01206..d664ec41 100644
--- a/R/plot.OutputsModel.R
+++ b/R/plot.OutputsModel.R
@@ -430,41 +430,49 @@ plot.OutputsModel <- function(x, Qobs = NULL, IndPeriod_Plot = NULL, BasinArea =
     kPlot <- kPlot+1; mar <- c(6, 5, 1, 5);
     par(new = FALSE, mar = mar, las = 0)
     xlim <- c(0, 1);
-    if (BOOL_Qobs & !BOOL_Qsim) { SelectNotZero <- SelectQobsNotZero;
+    if ( BOOL_Qobs & !BOOL_Qsim) { SelectNotZero <- SelectQobsNotZero;
                                 ylim <- range(log(Qobs[IndPeriod_Plot][SelectNotZero]), na.rm = TRUE); }
-    if (BOOL_Qsim & !BOOL_Qobs) { SelectNotZero <- SelectQsimNotZero;
+    if (!BOOL_Qobs &  BOOL_Qsim) { SelectNotZero <- SelectQsimNotZero;
                                 ylim <- range(log(OutputsModel$Qsim[IndPeriod_Plot][SelectNotZero]), na.rm = TRUE); }
-    if (BOOL_Qobs &  BOOL_Qsim) { SelectNotZero <- SelectQobsNotZero & SelectQsimNotZero;
+    if ( BOOL_Qobs &  BOOL_Qsim) { SelectNotZero <- SelectQobsNotZero & SelectQsimNotZero;
                                 ylim <- range(log(c(Qobs[IndPeriod_Plot][SelectNotZero], OutputsModel$Qsim[IndPeriod_Plot][SelectNotZero])), na.rm = TRUE); }
-    plot(0, 0, type = "n",
-         xlim = xlim, ylim = ylim,
-         xaxt = "n", yaxt = "n",
-         xlab = "", ylab = "", main = "", ...);
-    ### abline(h = 0, lty = 2, col = grey(0.5));
-    ### abline(h = 1, lty = 2, col = grey(0.5));
-    axis(side = 1, at = pretty(xlim), labels = pretty(xlim), cex.axis = cex.axis, ...);
-    par(las = 0); mtext(side = 1, text = "non-exceedance prob. [-]", line = line, cex = cex.lab); par(las = 0);
-    axis(side = 2, at = seqDATA1, labels = seqDATA2, cex.axis = cex.axis, ...) 
-    par(las = 0); mtext(side = 2, text = paste("flow  ", plotunit, "", sep = ""), line = line, cex = cex.lab); par(las = 0);
-    txtleg <- NULL; colleg <- NULL;
-    if (BOOL_Qobs) {
-      DATA2 <- log(Qobs[IndPeriod_Plot][SelectNotZero]);
-      SeqQuant <- seq(0, 1, by = 1/(length(DATA2))); Quant <- as.numeric(quantile(DATA2, SeqQuant, na.rm = TRUE));
-      Fn <- ecdf(DATA2);  YY <- DATA2; YY <- YY[order( Fn(DATA2) )]; XX <- Fn(DATA2); XX <- XX[order( Fn(DATA2) )];
-      lines(XX, YY, lwd = lwd, col = par("fg"));
-      txtleg <- c(txtleg, "observed"); colleg <- c(colleg, par("fg")); }
-    if (BOOL_Qsim) {
-      DATA2 <- log(OutputsModel$Qsim[IndPeriod_Plot][SelectNotZero]);
-      SeqQuant <- seq(0, 1, by = 1/(length(DATA2))); Quant <- as.numeric(quantile(DATA2, SeqQuant, na.rm = TRUE));
-      Fn <- ecdf(DATA2);  YY <- DATA2; YY <- YY[order( Fn(DATA2) )]; XX <- Fn(DATA2); XX <- XX[order( Fn(DATA2) )];
-      lines(XX, YY, lwd = lwd, col = "orangered");
-      txtleg <- c(txtleg, "simulated"); colleg <- c(colleg, "orangered"); }
-    if (!is.null(BasinArea)) {
-      Factor <- Factor_UNIT_M3S;
-      axis(side = 4, at = seqDATA1, labels = round(seqDATA2*Factor), cex.axis = cex.axis, ...)
-      par(las = 0); mtext(side = 4, paste0("flow ", "m3/s"), line = line, cex = cex.lab); par(las = 0); }
-    legend("topleft", txtleg, col = colleg, lty = 1, lwd = lwd, bty = "o", bg = bg, box.col = bg, cex = cex.leg)
-    legend("bottomright", "log scale", lty = 1, col = NA, bty = "o", bg = bg, box.col = bg, cex = cex.leg)
+    if (any(SelectNotZero)) {
+      plot(0, 0, type = "n",
+           xlim = xlim, ylim = ylim,
+           xaxt = "n", yaxt = "n",
+           xlab = "", ylab = "", main = "", ...);
+      axis(side = 1, at = pretty(xlim), labels = pretty(xlim), cex.axis = cex.axis, ...);
+      par(las = 0); mtext(side = 1, text = "non-exceedance prob. [-]", line = line, cex = cex.lab); par(las = 0);
+      axis(side = 2, at = seqDATA1, labels = seqDATA2, cex.axis = cex.axis, ...) 
+      par(las = 0); mtext(side = 2, text = paste("flow  ", plotunit, "", sep = ""), line = line, cex = cex.lab); par(las = 0);
+      txtleg <- NULL; colleg <- NULL
+      if (BOOL_Qobs) {
+        DATA2 <- log(Qobs[IndPeriod_Plot][SelectNotZero]);
+        SeqQuant <- seq(0, 1, by = 1/(length(DATA2))); Quant <- as.numeric(quantile(DATA2, SeqQuant, na.rm = TRUE));
+        Fn <- ecdf(DATA2);  YY <- DATA2; YY <- YY[order( Fn(DATA2) )]; XX <- Fn(DATA2); XX <- XX[order( Fn(DATA2) )];
+        lines(XX, YY, lwd = lwd, col = par("fg"));
+        txtleg <- c(txtleg, "observed"); colleg <- c(colleg, par("fg"))
+      }
+      if (BOOL_Qsim) {
+        DATA2 <- log(OutputsModel$Qsim[IndPeriod_Plot][SelectNotZero]);
+        SeqQuant <- seq(0, 1, by = 1/(length(DATA2))); Quant <- as.numeric(quantile(DATA2, SeqQuant, na.rm = TRUE));
+        Fn <- ecdf(DATA2);  YY <- DATA2; YY <- YY[order( Fn(DATA2) )]; XX <- Fn(DATA2); XX <- XX[order( Fn(DATA2) )];
+        lines(XX, YY, lwd = lwd, col = "orangered");
+        txtleg <- c(txtleg, "simulated"); colleg <- c(colleg, "orangered")
+      }
+      if (!is.null(BasinArea)) {
+        Factor <- Factor_UNIT_M3S;
+        axis(side = 4, at = seqDATA1, labels = round(seqDATA2*Factor), cex.axis = cex.axis, ...)
+        par(las = 0); mtext(side = 4, paste0("flow ", "m3/s"), line = line, cex = cex.lab); par(las = 0)
+      }
+      legend("topleft", txtleg, col = colleg, lty = 1, lwd = lwd, bty = "o", bg = bg, box.col = bg, cex = cex.leg)
+      legend("bottomright", "log scale", lty = 1, col = NA, bty = "o", bg = bg, box.col = bg, cex = cex.leg)
+    } else {
+      plot(0, 0, type = "n", xaxt = "n", yaxt = "n", xlab = "", ylab = "", main = "", ...);
+      par(las = 0); mtext(side = 1, text = "non-exceedance prob. [-]", line = line, cex = cex.lab); par(las = 0);
+      par(las = 0); mtext(side = 2, text = paste("flow  ", plotunit, "", sep = ""), line = line, cex = cex.lab); par(las = 0);
+      text(0, 0, labels = "NO COMMON DATA", col = "grey40")
+    }
     box()
   }
 
@@ -473,24 +481,31 @@ plot.OutputsModel <- function(x, Qobs = NULL, IndPeriod_Plot = NULL, BasinArea =
   if (BOOLPLOT_CorQQ) {
     kPlot <- kPlot+1; mar <- c(6, 5, 1, 5);
     par(new = FALSE, mar = mar, las = 0)
-    ylim <- log(range(c(Qobs[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero], OutputsModel$Qsim[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero]), na.rm = TRUE));
-    plot(log(Qobs[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero]),
-         log(OutputsModel$Qsim[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero]),
-         type = "p", pch = 1, cex = 0.9, col = par("fg"), lwd = lwd,
-         xlim = ylim, ylim = ylim, xaxt = "n", yaxt = "n", xlab = "", ylab = "", ...)
-    abline(a = 0, b = 1, col = "royalblue", lwd = lwd);
-    axis(side = 1, at = seqDATA1, labels = seqDATA2, cex = cex.leg, cex.axis = cex.axis, ...);
-    axis(side = 2, at = seqDATA1, labels = seqDATA2, cex = cex.leg, cex.axis = cex.axis, ...);
-    par(las = 0); mtext(side = 1, paste0("observed flow ", plotunit), line = line, cex = cex.lab); par(las = 0);
-    par(las = 0); mtext(side = 2, paste0("simulated flow ", plotunit), line = line, cex = cex.lab); par(las = 0);
-    if (!is.null(BasinArea)) {
-      Factor <- Factor_UNIT_M3S;
-      axis(side = 4, at = seqDATA1, labels = round(seqDATA2*Factor), cex.axis = cex.axis, ...);
-      par(las = 0); mtext(side = 4, paste0("flow ", "m3/s"), line = line, cex = cex.lab); par(las = 0); }
-    legend("bottomright", "log scale", lty = 1, col = NA, bty = "o", bg = bg, box.col = bg, cex = cex.leg)
+    if (any(SelectNotZero)) {
+      ylim <- log(range(c(Qobs[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero], OutputsModel$Qsim[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero]), na.rm = TRUE))
+      plot(log(Qobs[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero]),
+           log(OutputsModel$Qsim[IndPeriod_Plot][SelectQobsNotZero & SelectQsimNotZero]),
+           type = "p", pch = 1, cex = 0.9, col = par("fg"), lwd = lwd,
+           xlim = ylim, ylim = ylim, xaxt = "n", yaxt = "n", xlab = "", ylab = "", ...)
+      abline(a = 0, b = 1, col = "royalblue", lwd = lwd);
+      axis(side = 1, at = seqDATA1, labels = seqDATA2, cex = cex.leg, cex.axis = cex.axis, ...);
+      axis(side = 2, at = seqDATA1, labels = seqDATA2, cex = cex.leg, cex.axis = cex.axis, ...);
+      par(las = 0); mtext(side = 1, paste0("observed flow ", plotunit), line = line, cex = cex.lab); par(las = 0);
+      par(las = 0); mtext(side = 2, paste0("simulated flow ", plotunit), line = line, cex = cex.lab); par(las = 0);
+      if (!is.null(BasinArea)) {
+        Factor <- Factor_UNIT_M3S;
+        axis(side = 4, at = seqDATA1, labels = round(seqDATA2*Factor), cex.axis = cex.axis, ...);
+        par(las = 0); mtext(side = 4, paste0("flow ", "m3/s"), line = line, cex = cex.lab); par(las = 0); }
+      legend("bottomright", "log scale", lty = 1, col = NA, bty = "o", bg = bg, box.col = bg, cex = cex.leg)
+    } else {
+      plot(0, 0, type = "n", xaxt = "n", yaxt = "n", xlab = "", ylab = "", ...)
+      par(las = 0); mtext(side = 1, paste0("observed flow ", plotunit), line = line, cex = cex.lab); par(las = 0);
+      par(las = 0); mtext(side = 2, paste0("simulated flow ", plotunit), line = line, cex = cex.lab); par(las = 0);
+      text(0, 0, labels = "NO COMMON DATA", col = "grey40")
+    }
     box()
   }
-
+  
   ##Empty_plots
   while (kPlot < iPlotMax) {
     kPlot <- kPlot+1;
-- 
GitLab