From b14fe21e176f523e800793102fb5634e468b3165 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Mon, 27 Jun 2016 10:02:49 +0200 Subject: Show chi2 in plot.mkinfit, round with signif --- R/plot.mkinfit.R | 19 ++++++++++++++++++- R/plot.mmkin.R | 9 ++++----- 2 files changed, 22 insertions(+), 6 deletions(-) (limited to 'R') diff --git a/R/plot.mkinfit.R b/R/plot.mkinfit.R index 58ff88bc..3ca18c19 100644 --- a/R/plot.mkinfit.R +++ b/R/plot.mkinfit.R @@ -28,7 +28,8 @@ plot.mkinfit <- function(x, fit = x, add = FALSE, legend = !add, show_residuals = FALSE, maxabs = "auto", sep_obs = FALSE, rel.height.middle = 0.9, - lpos = "topright", inset = c(0.05, 0.05), ...) + lpos = "topright", inset = c(0.05, 0.05), + show_errmin = FALSE, errmin_digits = 3, ...) { if (add && show_residuals) stop("If adding to an existing plot we can not show residuals") if (add && sep_obs) stop("If adding to an existing plot we can not show observed variables separately") @@ -152,6 +153,22 @@ plot.mkinfit <- function(x, fit = x, col = col_obs[row_obs_vars], pch = pch_obs[row_obs_vars], lty = lty_obs[row_obs_vars]) } + # Show chi2 error value if requested + if (show_errmin) { + if (length(row_obs_vars) == 1) { + errmin_var = row_obs_vars + } else { + errmin_var = "All data" + if (length(row_obs_vars) != length(fit$mkinmod$map)) { + warning("Showing chi2 error level for all data, but only ", + row_obs_vars, " were selected for plotting") + } + } + + chi2 <- paste0(signif(100 * mkinerrmin(fit)[errmin_var, "err.min"], errmin_digits), "%") + mtext(bquote(chi^2 ~ "error level" == .(chi2)), cex = 0.7, line = 0.4) + } + # Show residuals if requested if (show_residuals) { residuals <- subset(fit$data, variable %in% row_obs_vars, residual) diff --git a/R/plot.mmkin.R b/R/plot.mmkin.R index 2cbb4a79..7de91e3e 100644 --- a/R/plot.mmkin.R +++ b/R/plot.mmkin.R @@ -16,7 +16,7 @@ # You should have received a copy of the GNU General Public License along with # this program. If not, see -plot.mmkin <- function(x, main = "auto", legends = 1, errmin_var = "All data", errmin_digits = 2, +plot.mmkin <- function(x, main = "auto", legends = 1, errmin_var = "All data", errmin_digits = 3, cex = 0.7, rel.height.middle = 0.9, ...) { n.m <- nrow(x) n.d <- ncol(x) @@ -79,10 +79,9 @@ plot.mmkin <- function(x, main = "auto", legends = 1, errmin_var = "All data", e datasets = colnames(x)[i.fit], none = "") - if (!is.null(errmin_var)) { - chi2 <- paste0(round(100 * mkinerrmin(fit)[errmin_var, "err.min"], errmin_digits), "%") - mtext(bquote(.(fit_name) ~ chi^2 ~ "error level" == .(chi2)), cex = cex, line = 0.4) - } + chi2 <- paste0(signif(100 * mkinerrmin(fit)[errmin_var, "err.min"], errmin_digits), "%") + mtext(bquote(.(fit_name) ~ chi^2 ~ "error level" == .(chi2)), cex = cex, line = 0.4) + mkinresplot(fit, legend = FALSE, ...) mtext(paste(fit_name, "residuals"), cex = cex, line = 0.4) } -- cgit v1.2.1