From 43c0ae8431440bab723b35909d43f51434288c33 Mon Sep 17 00:00:00 2001 From: Johannes Ranke Date: Sat, 25 Jun 2016 21:07:11 +0200 Subject: Fix the plot margins for combined plots --- R/plot.mkinfit.R | 21 +++++++++++++++++++++ R/plot.mmkin.R | 18 ++++++++++++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) (limited to 'R') diff --git a/R/plot.mkinfit.R b/R/plot.mkinfit.R index 317c74a3..58ff88bc 100644 --- a/R/plot.mkinfit.R +++ b/R/plot.mkinfit.R @@ -103,6 +103,27 @@ plot.mkinfit <- function(x, fit = x, ylim_row = ylim } + if (sep_obs) { + # Margins for top row of plots when we have more than one row + # Reduce bottom margin by 2.1 - hides x axis legend + if (plot_row == 1 & n_plot_rows > 1) { + par(mar = c(3.0, 4.1, 4.1, 2.1)) + } + + # Margins for middle rows of plots, if any + if (plot_row > 1 & plot_row < n_plot_rows) { + # Reduce top margin by 2 after the first plot as we have no main title, + # reduced plot height, therefore we need rel.height.middle in the layout + par(mar = c(3.0, 4.1, 2.1, 2.1)) + } + + # Margins for bottom row of plots when we have more than one row + if (plot_row == n_plot_rows & n_plot_rows > 1) { + # Restore bottom margin for last plot to show x axis legend + par(mar = c(5.1, 4.1, 2.1, 2.1)) + } + } + # Set up the main plot if not to be added to an existing plot if (add == FALSE) { plot(0, type="n", diff --git a/R/plot.mmkin.R b/R/plot.mmkin.R index 7b54be4b..2cbb4a79 100644 --- a/R/plot.mmkin.R +++ b/R/plot.mmkin.R @@ -46,15 +46,29 @@ plot.mmkin <- function(x, main = "auto", legends = 1, errmin_var = "All data", e else rep(1, n.fits) layout(matrix(1:(2 * n.fits), n.fits, 2, byrow = TRUE), heights = rel.heights) - par(mar = c(3.0, 4.1, 4.1, 2.1)) # Reduce bottom margin by 2.1 - hides x axis legend par(cex = cex) for (i.fit in 1:n.fits) { - if (i.fit == 2) { + + # Margins for top row of plots when we have more than one row + # Reduce bottom margin by 2.1 - hides x axis legend + if (i.fit == 1 & n.fits > 1) { + par(mar = c(3.0, 4.1, 4.1, 2.1)) + } + + # Margins for middle rows of plots, if any + if (i.fit > 1 & i.fit < n.fits) { # Reduce top margin by 2 after the first plot as we have no main title, # reduced plot height, therefore we need rel.height.middle in the layout par(mar = c(3.0, 4.1, 2.1, 2.1)) } + + # Margins for bottom row of plots when we have more than one row + if (i.fit == n.fits & n.fits > 1) { + # Restore bottom margin for last plot to show x axis legend + par(mar = c(5.1, 4.1, 2.1, 2.1)) + } + fit <- x[[i.fit]] plot(fit, legend = legends == i.fit, ...) -- cgit v1.2.1