aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--R/mkinresplot.R18
-rw-r--r--R/plot.mkinfit.R44
-rw-r--r--check.log8
-rw-r--r--docs/reference/index.html2
-rw-r--r--docs/reference/mkinresplot.html19
-rw-r--r--docs/reference/plot.mkinfit-2.pngbin52842 -> 57593 bytes
-rw-r--r--docs/reference/plot.mkinfit-3.pngbin51545 -> 61280 bytes
-rw-r--r--docs/reference/plot.mkinfit-5.pngbin59560 -> 59080 bytes
-rw-r--r--docs/reference/plot.mkinfit.html12
-rw-r--r--docs/reference/synthetic_data_for_UBA_2014-1.pngbin62975 -> 62550 bytes
-rw-r--r--docs/reference/synthetic_data_for_UBA_2014.html32
-rw-r--r--man/mkinresplot.Rd32
-rw-r--r--man/plot.mkinfit.Rd15
-rw-r--r--man/synthetic_data_for_UBA_2014.Rd10
-rw-r--r--test.log10
-rw-r--r--tests/figs/error-model-fitting/plot-errmod-with-sfo-lin-a.svg237
-rw-r--r--tests/figs/plotting/mkinfit-plot-for-focus-c-with-sep-true.svg44
-rw-r--r--tests/figs/plotting/plot-err-for-focus-d.svg200
-rw-r--r--tests/figs/plotting/plot-res-for-focus-d.svg196
-rw-r--r--tests/testthat/test_error_models.R3
-rw-r--r--tests/testthat/test_plots_summary_twa.R8
21 files changed, 792 insertions, 98 deletions
diff --git a/R/mkinresplot.R b/R/mkinresplot.R
index 739a80e9..974d0549 100644
--- a/R/mkinresplot.R
+++ b/R/mkinresplot.R
@@ -1,4 +1,4 @@
-# Copyright (C) 2008-2014 Johannes Ranke
+# Copyright (C) 2008-2014,2019 Johannes Ranke
# Contact: jranke@uni-bremen.de
# This file is part of the R package mkin
@@ -21,7 +21,10 @@ mkinresplot <- function (object,
obs_vars = names(object$mkinmod$map),
xlim = c(0, 1.1 * max(object$data$time)),
xlab = "Time", ylab = "Residual",
- maxabs = "auto", legend= TRUE, lpos = "topright", ...)
+ maxabs = "auto", legend= TRUE, lpos = "topright",
+ col_obs = "auto", pch_obs = "auto",
+ frame = TRUE,
+ ...)
{
obs_vars_all <- as.character(unique(object$data$variable))
@@ -33,10 +36,17 @@ mkinresplot <- function (object,
if (maxabs == "auto") maxabs = max(abs(residuals), na.rm = TRUE)
- col_obs <- pch_obs <- 1:length(obs_vars)
+ # Set colors and symbols
+ if (col_obs[1] == "auto") {
+ col_obs <- 1:length(obs_vars)
+ }
+
+ if (pch_obs[1] == "auto") {
+ pch_obs <- 1:length(obs_vars)
+ }
names(col_obs) <- names(pch_obs) <- obs_vars
- plot(0, type = "n",
+ plot(0, type = "n", frame = frame,
xlab = xlab, ylab = ylab,
xlim = xlim,
ylim = c(-1.2 * maxabs, 1.2 * maxabs), ...)
diff --git a/R/plot.mkinfit.R b/R/plot.mkinfit.R
index 2a82301f..e39da416 100644
--- a/R/plot.mkinfit.R
+++ b/R/plot.mkinfit.R
@@ -30,8 +30,9 @@ plot.mkinfit <- function(x, fit = x,
show_errplot = FALSE,
maxabs = "auto",
sep_obs = FALSE, rel.height.middle = 0.9,
+ row_layout = FALSE,
lpos = "topright", inset = c(0.05, 0.05),
- show_errmin = FALSE, errmin_digits = 3,
+ show_errmin = FALSE, errmin_digits = 3,
frame = TRUE, ...)
{
if (add && show_residuals) stop("If adding to an existing plot we can not show residuals")
@@ -80,8 +81,9 @@ plot.mkinfit <- function(x, fit = x,
# Layout should be restored afterwards
oldpar <- par(no.readonly = TRUE)
- # If the observed variables are shown separately, do row layout
- if (sep_obs) {
+ # If the observed variables are shown separately, or if requested, do row layout
+ if (sep_obs | row_layout) {
+ row_layout <- TRUE
n_plot_cols = if (show_residuals | show_errplot) 2 else 1
n_plots = n_plot_rows * n_plot_cols
@@ -114,7 +116,7 @@ plot.mkinfit <- function(x, fit = x,
ylim_row = ylim
}
- if (sep_obs) {
+ if (row_layout) {
# 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) {
@@ -186,24 +188,14 @@ plot.mkinfit <- function(x, fit = x,
mtext(chi2_text, cex = 0.7, line = 0.4)
}
+ if (do_layout & !row_layout) {
+ par(mar = c(5, 4, 0, 2) + 0.1)
+ }
+
# Show residuals if requested
if (show_residuals) {
- residuals <- subset(fit$data, variable %in% row_obs_vars, residual)
- if (maxabs == "auto") {
- maxabs_row = max(abs(residuals), na.rm = TRUE)
- } else {
- maxabs_row = maxabs
- }
- if (!sep_obs) par(mar = c(5, 4, 0, 2) + 0.1)
- plot(0, type="n",
- xlim = xlim,
- ylim = c(-1.2 * maxabs_row, 1.2 * maxabs_row),
- xlab = xlab, ylab = "Residuals", frame = frame)
- for(obs_var in row_obs_vars){
- residuals_plot <- subset(fit$data, variable == obs_var, c("time", "residual"))
- points(residuals_plot, pch = pch_obs[obs_var], col = col_obs[obs_var])
- }
- abline(h = 0, lty = 2)
+ mkinresplot(fit, obs_vars = row_obs_vars, pch_obs = pch_obs[row_obs_vars], col_obs = col_obs[row_obs_vars],
+ legend = FALSE, frame = frame)
}
# Show error model plot if requested
@@ -216,7 +208,15 @@ plot.mkinfit <- function(x, fit = x,
}
# Convenience function for switching on some features of mkinfit
# that have not been made the default to keep compatibility
-plot_sep <- function(fit, sep_obs = TRUE, show_residuals = TRUE, show_errmin = TRUE, ...) {
+plot_sep <- function(fit, show_errmin = TRUE, ...) {
plot.mkinfit(fit, sep_obs = TRUE, show_residuals = TRUE,
- show_errmin = TRUE, ...)
+ show_errmin = show_errmin, ...)
+}
+plot_res <- function(fit, sep_obs = FALSE, show_errmin = sep_obs, ...) {
+ plot.mkinfit(fit, sep_obs = sep_obs, show_errmin = show_errmin,
+ show_residuals = TRUE, row_layout = TRUE, ...)
+}
+plot_err <- function(fit, sep_obs = FALSE, show_errmin = sep_obs, ...) {
+ plot.mkinfit(fit, sep_obs = sep_obs, show_errmin = show_errmin,
+ show_errplot = TRUE, row_layout = TRUE, ...)
}
diff --git a/check.log b/check.log
index d2a6122d..9ef5c22d 100644
--- a/check.log
+++ b/check.log
@@ -24,9 +24,7 @@ Maintainer: ‘Johannes Ranke <jranke@uni-bremen.de>’
* checking for future file timestamps ... OK
* checking ‘build’ directory ... OK
* checking DESCRIPTION meta-information ... OK
-* checking top-level files ... NOTE
-Non-standard file/directory found at top level:
- ‘tests_slow.log’
+* checking top-level files ... OK
* checking for left-over files ... OK
* checking index information ... OK
* checking package subdirectories ... OK
@@ -61,7 +59,7 @@ Non-standard file/directory found at top level:
* checking examples ... NOTE
Examples with CPU or elapsed time > 5s
user system elapsed
-synthetic_data_for_UBA_2014 9.778 0.239 10.019
+synthetic_data_for_UBA_2014 9.755 0.273 10.029
* checking for unstated dependencies in ‘tests’ ... OK
* checking tests ... SKIPPED
* checking for unstated dependencies in vignettes ... OK
@@ -70,7 +68,7 @@ synthetic_data_for_UBA_2014 9.778 0.239 10.019
* checking PDF version of manual ... OK
* DONE
-Status: 2 NOTEs
+Status: 1 NOTE
See
‘/home/jranke/git/mkin/mkin.Rcheck/00check.log’
for details.
diff --git a/docs/reference/index.html b/docs/reference/index.html
index 08ad3d1a..e74a8ad5 100644
--- a/docs/reference/index.html
+++ b/docs/reference/index.html
@@ -175,7 +175,7 @@
<tr>
<td>
- <p><code><a href="plot.mkinfit.html">plot(<i>&lt;mkinfit&gt;</i>)</a></code> <code><a href="plot.mkinfit.html">plot_sep()</a></code> </p>
+ <p><code><a href="plot.mkinfit.html">plot(<i>&lt;mkinfit&gt;</i>)</a></code> <code><a href="plot.mkinfit.html">plot_sep()</a></code> <code><a href="plot.mkinfit.html">plot_res()</a></code> <code><a href="plot.mkinfit.html">plot_err()</a></code> </p>
</td>
<td><p>Plot the observed data and the fitted model of an mkinfit object</p></td>
</tr><tr>
diff --git a/docs/reference/mkinresplot.html b/docs/reference/mkinresplot.html
index d841909f..eea5b218 100644
--- a/docs/reference/mkinresplot.html
+++ b/docs/reference/mkinresplot.html
@@ -146,7 +146,10 @@
<span class='kw'>obs_vars</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span>(<span class='no'>object</span>$<span class='no'>mkinmod</span>$<span class='no'>map</span>),
<span class='kw'>xlim</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='fl'>0</span>, <span class='fl'>1.1</span> * <span class='fu'><a href='https://rdrr.io/r/base/Extremes.html'>max</a></span>(<span class='no'>object</span>$<span class='no'>data</span>$<span class='no'>time</span>)),
<span class='kw'>xlab</span> <span class='kw'>=</span> <span class='st'>"Time"</span>, <span class='kw'>ylab</span> <span class='kw'>=</span> <span class='st'>"Residual"</span>,
- <span class='kw'>maxabs</span> <span class='kw'>=</span> <span class='st'>"auto"</span>, <span class='kw'>legend</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>lpos</span> <span class='kw'>=</span> <span class='st'>"topright"</span>, <span class='no'>...</span>)</pre>
+ <span class='kw'>maxabs</span> <span class='kw'>=</span> <span class='st'>"auto"</span>, <span class='kw'>legend</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>lpos</span> <span class='kw'>=</span> <span class='st'>"topright"</span>,
+ <span class='kw'>col_obs</span> <span class='kw'>=</span> <span class='st'>"auto"</span>, <span class='kw'>pch_obs</span> <span class='kw'>=</span> <span class='st'>"auto"</span>,
+ <span class='kw'>frame</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>,
+ <span class='no'>...</span>)</pre>
<h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2>
<table class="ref-arguments">
@@ -184,7 +187,19 @@
<tr>
<th>lpos</th>
<td><p>Where should the legend be placed? Default is "topright". Will be passed on to
- <code><a href='https://rdrr.io/r/graphics/legend.html'>legend</a></code>.</p></td>
+ <code><a href='https://rdrr.io/r/graphics/legend.html'>legend</a></code>.</p></td>
+ </tr>
+ <tr>
+ <th>col_obs</th>
+ <td><p>Colors for the observed variables.</p></td>
+ </tr>
+ <tr>
+ <th>pch_obs</th>
+ <td><p>Symbols to be used for the observed variables.</p></td>
+ </tr>
+ <tr>
+ <th>frame</th>
+ <td><p>Should a frame be drawn around the plots?</p></td>
</tr>
<tr>
<th>...</th>
diff --git a/docs/reference/plot.mkinfit-2.png b/docs/reference/plot.mkinfit-2.png
index 84bec348..6910ae47 100644
--- a/docs/reference/plot.mkinfit-2.png
+++ b/docs/reference/plot.mkinfit-2.png
Binary files differ
diff --git a/docs/reference/plot.mkinfit-3.png b/docs/reference/plot.mkinfit-3.png
index 557046da..8d399598 100644
--- a/docs/reference/plot.mkinfit-3.png
+++ b/docs/reference/plot.mkinfit-3.png
Binary files differ
diff --git a/docs/reference/plot.mkinfit-5.png b/docs/reference/plot.mkinfit-5.png
index 36fcff6a..20f30221 100644
--- a/docs/reference/plot.mkinfit-5.png
+++ b/docs/reference/plot.mkinfit-5.png
Binary files differ
diff --git a/docs/reference/plot.mkinfit.html b/docs/reference/plot.mkinfit.html
index 795262f8..df01a00b 100644
--- a/docs/reference/plot.mkinfit.html
+++ b/docs/reference/plot.mkinfit.html
@@ -159,9 +159,12 @@ If the current plot device is a tikz device,
<span class='kw'>show_errplot</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>,
<span class='kw'>maxabs</span> <span class='kw'>=</span> <span class='st'>"auto"</span>,
<span class='kw'>sep_obs</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>, <span class='kw'>rel.height.middle</span> <span class='kw'>=</span> <span class='fl'>0.9</span>,
+ <span class='kw'>row_layout</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>,
<span class='kw'>lpos</span> <span class='kw'>=</span> <span class='st'>"topright"</span>, <span class='kw'>inset</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='fl'>0.05</span>, <span class='fl'>0.05</span>),
<span class='kw'>show_errmin</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>, <span class='kw'>errmin_digits</span> <span class='kw'>=</span> <span class='fl'>3</span>, <span class='kw'>frame</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)
-<span class='fu'>plot_sep</span>(<span class='no'>fit</span>, <span class='kw'>sep_obs</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>show_residuals</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>show_errmin</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)</pre>
+<span class='fu'>plot_sep</span>(<span class='no'>fit</span>, <span class='kw'>show_errmin</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='no'>...</span>)
+<span class='fu'>plot_res</span>(<span class='no'>fit</span>, <span class='kw'>sep_obs</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>, <span class='kw'>show_errmin</span> <span class='kw'>=</span> <span class='no'>sep_obs</span>, <span class='no'>...</span>)
+<span class='fu'>plot_err</span>(<span class='no'>fit</span>, <span class='kw'>sep_obs</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>, <span class='kw'>show_errmin</span> <span class='kw'>=</span> <span class='no'>sep_obs</span>, <span class='no'>...</span>)</pre>
<h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2>
<table class="ref-arguments">
@@ -245,6 +248,11 @@ If the current plot device is a tikz device,
<td><p>The relative height of the middle plot, if more than two rows of plots are shown.</p></td>
</tr>
<tr>
+ <th>row_layout</th>
+ <td><p>Should we use a row layout where the residual plot or the error model plot is shown
+ to the right?</p></td>
+ </tr>
+ <tr>
<th>lpos</th>
<td><p>Position(s) of the legend(s). Passed to <code><a href='https://rdrr.io/r/graphics/legend.html'>legend</a></code> as the first argument.
If not length one, this should be of the same length as the obs_var argument.</p></td>
@@ -281,7 +289,7 @@ If the current plot device is a tikz device,
<span class='co'># parent to sink included</span>
<span class='co'># \dontrun{</span>
<span class='no'>SFO_SFO</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinmod.html'>mkinmod</a></span>(<span class='kw'>parent</span> <span class='kw'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span>(<span class='st'>"SFO"</span>, <span class='st'>"m1"</span>, <span class='kw'>full</span> <span class='kw'>=</span> <span class='st'>"Parent"</span>),
- <span class='kw'>m1</span> <span class='kw'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span>(<span class='st'>"SFO"</span>, <span class='kw'>full</span> <span class='kw'>=</span> <span class='st'>"Metabolite M1"</span> ))</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'><span class='no'>fit</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='no'>SFO_SFO</span>, <span class='no'>FOCUS_2006_D</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>error_model</span> <span class='kw'>=</span> <span class='st'>"tc"</span>)</div><div class='output co'>#&gt; <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/graphics/plot.html'>plot</a></span>(<span class='no'>fit</span>)</div><div class='img'><img src='plot.mkinfit-1.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/graphics/plot.html'>plot</a></span>(<span class='no'>fit</span>, <span class='kw'>show_residuals</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)</div><div class='img'><img src='plot.mkinfit-2.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/graphics/plot.html'>plot</a></span>(<span class='no'>fit</span>, <span class='kw'>show_errplot</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)</div><div class='img'><img src='plot.mkinfit-3.png' alt='' width='700' height='433' /></div><div class='input'>
+ <span class='kw'>m1</span> <span class='kw'>=</span> <span class='fu'><a href='mkinsub.html'>mkinsub</a></span>(<span class='st'>"SFO"</span>, <span class='kw'>full</span> <span class='kw'>=</span> <span class='st'>"Metabolite M1"</span> ))</div><div class='output co'>#&gt; <span class='message'>Successfully compiled differential equation model from auto-generated C code.</span></div><div class='input'><span class='no'>fit</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='no'>SFO_SFO</span>, <span class='no'>FOCUS_2006_D</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>error_model</span> <span class='kw'>=</span> <span class='st'>"tc"</span>)</div><div class='output co'>#&gt; <span class='warning'>Warning: Observations with value of zero were removed from the data</span></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/graphics/plot.html'>plot</a></span>(<span class='no'>fit</span>)</div><div class='img'><img src='plot.mkinfit-1.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'>plot_res</span>(<span class='no'>fit</span>)</div><div class='img'><img src='plot.mkinfit-2.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'>plot_err</span>(<span class='no'>fit</span>)</div><div class='img'><img src='plot.mkinfit-3.png' alt='' width='700' height='433' /></div><div class='input'>
<span class='co'># Show the observed variables separately</span>
<span class='fu'><a href='https://rdrr.io/r/graphics/plot.html'>plot</a></span>(<span class='no'>fit</span>, <span class='kw'>sep_obs</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>lpos</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"topright"</span>, <span class='st'>"bottomright"</span>))</div><div class='img'><img src='plot.mkinfit-4.png' alt='' width='700' height='433' /></div><div class='input'>
<span class='co'># Show the observed variables separately, with residuals</span>
diff --git a/docs/reference/synthetic_data_for_UBA_2014-1.png b/docs/reference/synthetic_data_for_UBA_2014-1.png
index 9d8c0931..201ef0fd 100644
--- a/docs/reference/synthetic_data_for_UBA_2014-1.png
+++ b/docs/reference/synthetic_data_for_UBA_2014-1.png
Binary files differ
diff --git a/docs/reference/synthetic_data_for_UBA_2014.html b/docs/reference/synthetic_data_for_UBA_2014.html
index a639151b..ddc88c21 100644
--- a/docs/reference/synthetic_data_for_UBA_2014.html
+++ b/docs/reference/synthetic_data_for_UBA_2014.html
@@ -278,12 +278,13 @@ Compare also the code in the example section to see the degradation models." />
<span class='co'># This is just one example of an evaluation using the kinetic model used for</span>
<span class='co'># the generation of the data</span>
-<span class='no'>fit</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='no'>m_synth_SFO_lin</span>, <span class='no'>synthetic_data_for_UBA_2014</span><span class='kw'>[[</span><span class='fl'>1</span>]]$<span class='no'>data</span>,
- <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)
-<span class='fu'><a href='plot.mkinfit.html'>plot_sep</a></span>(<span class='no'>fit</span>)</div><div class='img'><img src='synthetic_data_for_UBA_2014-1.png' alt='' width='700' height='433' /></div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/summary.html'>summary</a></span>(<span class='no'>fit</span>)</div><div class='output co'>#&gt; mkin version used for fitting: 0.9.49.6
+<span class='co'># \dontrun{</span>
+ <span class='no'>fit</span> <span class='kw'>&lt;-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='no'>m_synth_SFO_lin</span>, <span class='no'>synthetic_data_for_UBA_2014</span><span class='kw'>[[</span><span class='fl'>1</span>]]$<span class='no'>data</span>,
+ <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>)
+ <span class='fu'><a href='plot.mkinfit.html'>plot_sep</a></span>(<span class='no'>fit</span>)</div><div class='img'><img src='synthetic_data_for_UBA_2014-1.png' alt='' width='700' height='433' /></div><div class='input'> <span class='fu'><a href='https://rdrr.io/r/base/summary.html'>summary</a></span>(<span class='no'>fit</span>)</div><div class='output co'>#&gt; mkin version used for fitting: 0.9.49.6
#&gt; R version used for fitting: 3.6.1
-#&gt; Date of fit: Thu Sep 19 12:48:50 2019
-#&gt; Date of summary: Thu Sep 19 12:48:50 2019
+#&gt; Date of fit: Mon Oct 21 18:52:20 2019
+#&gt; Date of summary: Mon Oct 21 18:52:20 2019
#&gt;
#&gt; Equations:
#&gt; d_parent/dt = - k_parent * parent
@@ -292,21 +293,20 @@ Compare also the code in the example section to see the degradation models." />
#&gt;
#&gt; Model predictions using solution type deSolve
#&gt;
-#&gt; Fitted using 847 model solutions performed in 2.49 s
+#&gt; Fitted using 847 model solutions performed in 2.42 s
#&gt;
#&gt; Error model: Constant variance
#&gt;
#&gt; Error model algorithm: OLS
#&gt;
#&gt; Starting values for parameters to be optimised:
-#&gt; value type
-#&gt; parent_0 101.350000 state
-#&gt; k_parent 0.100000 deparm
-#&gt; k_M1 0.100100 deparm
-#&gt; k_M2 0.100200 deparm
-#&gt; f_parent_to_M1 0.500000 deparm
-#&gt; f_M1_to_M2 0.500000 deparm
-#&gt; sigma 2.273126 error
+#&gt; value type
+#&gt; parent_0 101.3500 state
+#&gt; k_parent 0.1000 deparm
+#&gt; k_M1 0.1001 deparm
+#&gt; k_M2 0.1002 deparm
+#&gt; f_parent_to_M1 0.5000 deparm
+#&gt; f_M1_to_M2 0.5000 deparm
#&gt;
#&gt; Starting values for the transformed parameters actually optimised:
#&gt; value lower upper
@@ -316,7 +316,6 @@ Compare also the code in the example section to see the degradation models." />
#&gt; log_k_M2 -2.300587 -Inf Inf
#&gt; f_parent_ilr_1 0.000000 -Inf Inf
#&gt; f_M1_ilr_1 0.000000 -Inf Inf
-#&gt; sigma 2.273126 0 Inf
#&gt;
#&gt; Fixed parameter values:
#&gt; value type
@@ -424,7 +423,8 @@ Compare also the code in the example section to see the degradation models." />
#&gt; 90 M2 10.6 1.013e+01 0.47130
#&gt; 90 M2 10.8 1.013e+01 0.67130
#&gt; 120 M2 9.8 5.521e+00 4.27893
-#&gt; 120 M2 3.3 5.521e+00 -2.22107</div></pre>
+#&gt; 120 M2 3.3 5.521e+00 -2.22107</div><div class='input'># }
+</div></pre>
</div>
<div class="col-md-3 hidden-xs hidden-sm" id="sidebar">
<h2>Contents</h2>
diff --git a/man/mkinresplot.Rd b/man/mkinresplot.Rd
index cdcfbd37..e788d836 100644
--- a/man/mkinresplot.Rd
+++ b/man/mkinresplot.Rd
@@ -14,38 +14,50 @@
obs_vars = names(object$mkinmod$map),
xlim = c(0, 1.1 * max(object$data$time)),
xlab = "Time", ylab = "Residual",
- maxabs = "auto", legend = TRUE, lpos = "topright", ...)
+ maxabs = "auto", legend = TRUE, lpos = "topright",
+ col_obs = "auto", pch_obs = "auto",
+ frame = TRUE,
+ ...)
}
\arguments{
\item{object}{
A fit represented in an \code{\link{mkinfit}} object.
-}
+ }
\item{obs_vars}{
A character vector of names of the observed variables for which residuals
should be plotted. Defaults to all observed variables in the model
-}
+ }
\item{xlim}{
plot range in x direction.
}
\item{xlab}{
Label for the x axis. Defaults to "Time [days]".
-}
+ }
\item{ylab}{
Label for the y axis. Defaults to "Residual [\% of applied radioactivity]".
-}
+ }
\item{maxabs}{
Maximum absolute value of the residuals. This is used for the scaling of
the y axis and defaults to "auto".
-}
+ }
\item{legend}{
Should a legend be plotted? Defaults to "TRUE".
-}
+ }
\item{lpos}{
Where should the legend be placed? Default is "topright". Will be passed on to
- \code{\link{legend}}. }
+ \code{\link{legend}}. }
+ \item{col_obs}{
+ Colors for the observed variables.
+ }
+ \item{pch_obs}{
+ Symbols to be used for the observed variables.
+ }
+ \item{frame}{
+ Should a frame be drawn around the plots?
+ }
\item{\dots}{
- further arguments passed to \code{\link{plot}}.
-}
+ further arguments passed to \code{\link{plot}}.
+ }
}
\value{
Nothing is returned by this function, as it is called for its side effect, namely to produce a plot.
diff --git a/man/plot.mkinfit.Rd b/man/plot.mkinfit.Rd
index a4f47073..e7b456a1 100644
--- a/man/plot.mkinfit.Rd
+++ b/man/plot.mkinfit.Rd
@@ -1,6 +1,8 @@
\name{plot.mkinfit}
\alias{plot.mkinfit}
\alias{plot_sep}
+\alias{plot_res}
+\alias{plot_err}
\title{
Plot the observed data and the fitted model of an mkinfit object
}
@@ -26,9 +28,12 @@
show_errplot = FALSE,
maxabs = "auto",
sep_obs = FALSE, rel.height.middle = 0.9,
+ row_layout = FALSE,
lpos = "topright", inset = c(0.05, 0.05),
show_errmin = FALSE, errmin_digits = 3, frame = TRUE, \dots)
-plot_sep(fit, sep_obs = TRUE, show_residuals = TRUE, show_errmin = TRUE, \dots)
+plot_sep(fit, show_errmin = TRUE, \dots)
+plot_res(fit, sep_obs = FALSE, show_errmin = sep_obs, \dots)
+plot_err(fit, sep_obs = FALSE, show_errmin = sep_obs, \dots)
}
\arguments{
\item{x}{
@@ -92,6 +97,10 @@ plot_sep(fit, sep_obs = TRUE, show_residuals = TRUE, show_errmin = TRUE, \dots)
\item{rel.height.middle}{
The relative height of the middle plot, if more than two rows of plots are shown.
}
+ \item{row_layout}{
+ Should we use a row layout where the residual plot or the error model plot is shown
+ to the right?
+ }
\item{lpos}{
Position(s) of the legend(s). Passed to \code{\link{legend}} as the first argument.
If not length one, this should be of the same length as the obs_var argument.
@@ -123,8 +132,8 @@ SFO_SFO <- mkinmod(parent = mkinsub("SFO", "m1", full = "Parent"),
m1 = mkinsub("SFO", full = "Metabolite M1" ))
fit <- mkinfit(SFO_SFO, FOCUS_2006_D, quiet = TRUE, error_model = "tc")
plot(fit)
-plot(fit, show_residuals = TRUE)
-plot(fit, show_errplot = TRUE)
+plot_res(fit)
+plot_err(fit)
# Show the observed variables separately
plot(fit, sep_obs = TRUE, lpos = c("topright", "bottomright"))
diff --git a/man/synthetic_data_for_UBA_2014.Rd b/man/synthetic_data_for_UBA_2014.Rd
index cfab5622..d68f45d4 100644
--- a/man/synthetic_data_for_UBA_2014.Rd
+++ b/man/synthetic_data_for_UBA_2014.Rd
@@ -138,9 +138,11 @@ d_synth_err_names = c(
# This is just one example of an evaluation using the kinetic model used for
# the generation of the data
-fit <- mkinfit(m_synth_SFO_lin, synthetic_data_for_UBA_2014[[1]]$data,
- quiet = TRUE)
-plot_sep(fit)
-summary(fit)
+\dontrun{
+ fit <- mkinfit(m_synth_SFO_lin, synthetic_data_for_UBA_2014[[1]]$data,
+ quiet = TRUE)
+ plot_sep(fit)
+ summary(fit)
+}
}
\keyword{datasets}
diff --git a/test.log b/test.log
index fd292165..124d84e8 100644
--- a/test.log
+++ b/test.log
@@ -3,9 +3,9 @@ Testing mkin
✔ | OK F W S | Context
✔ | 2 | Export dataset for reading into CAKE
✔ | 3 | Confidence intervals and p-values
-✔ | 10 | Error model fitting [51.6 s]
+✔ | 11 | Error model fitting [51.4 s]
✔ | 5 | Calculation of FOCUS chi2 error levels [3.5 s]
-✔ | 13 | Results for FOCUS D established in expertise for UBA (Ranke 2014) [3.4 s]
+✔ | 13 | Results for FOCUS D established in expertise for UBA (Ranke 2014) [3.5 s]
✔ | 6 | Test fitting the decline of metabolites from their maximum [0.9 s]
✔ | 1 | Fitting the logistic model [0.9 s]
✔ | 1 | Test dataset class mkinds used in gmkin
@@ -15,7 +15,7 @@ Testing mkin
✔ | 16 | Evaluations according to 2015 NAFTA guidance [4.0 s]
✔ | 4 | Calculation of maximum time weighted average concentrations (TWAs) [2.2 s]
✔ | 2 | Summary
-✔ | 5 | Plotting [0.3 s]
+✔ | 7 | Plotting [0.4 s]
✔ | 3 | AIC calculation
✔ | 2 | Complex test case from Schaefer et al. (2007) Piacenza paper [5.3 s]
✔ | 4 | Fitting the SFORB model [1.7 s]
@@ -23,9 +23,9 @@ Testing mkin
✔ | 4 | Results for synthetic data established in expertise for UBA (Ranke 2014) [7.1 s]
══ Results ═════════════════════════════════════════════════════════════════════
-Duration: 84.4 s
+Duration: 84.3 s
-OK: 106
+OK: 109
Failed: 0
Warnings: 0
Skipped: 0
diff --git a/tests/figs/error-model-fitting/plot-errmod-with-sfo-lin-a.svg b/tests/figs/error-model-fitting/plot-errmod-with-sfo-lin-a.svg
new file mode 100644
index 00000000..88e7aaee
--- /dev/null
+++ b/tests/figs/error-model-fitting/plot-errmod-with-sfo-lin-a.svg
@@ -0,0 +1,237 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 720.00 576.00'>
+<defs>
+ <style type='text/css'><![CDATA[
+ line, polyline, polygon, path, rect, circle {
+ fill: none;
+ stroke: #000000;
+ stroke-linecap: round;
+ stroke-linejoin: round;
+ stroke-miterlimit: 10.00;
+ }
+ ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<line x1='69.07' y1='502.56' x2='319.73' y2='502.56' style='stroke-width: 0.75;' />
+<line x1='69.07' y1='502.56' x2='69.07' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='110.84' y1='502.56' x2='110.84' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='152.62' y1='502.56' x2='152.62' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='194.40' y1='502.56' x2='194.40' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='236.18' y1='502.56' x2='236.18' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='277.96' y1='502.56' x2='277.96' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='319.73' y1='502.56' x2='319.73' y2='509.76' style='stroke-width: 0.75;' />
+<text x='65.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='104.17' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='145.95' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text x='187.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text x='229.51' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text x='267.95' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text>
+<text x='309.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>120</text>
+<line x1='59.04' y1='486.13' x2='59.04' y2='83.73' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='486.13' x2='51.84' y2='486.13' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='405.65' x2='51.84' y2='405.65' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='325.17' x2='51.84' y2='325.17' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='244.69' x2='51.84' y2='244.69' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='164.21' x2='51.84' y2='164.21' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='83.73' x2='51.84' y2='83.73' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,489.47) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text transform='translate(41.76,412.32) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text transform='translate(41.76,331.84) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text transform='translate(41.76,251.36) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,170.88) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,93.74) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text>
+<polyline points='59.04,502.56 329.76,502.56 329.76,59.04 59.04,59.04 59.04,502.56 ' style='stroke-width: 0.75;' />
+<defs>
+ <clipPath id='cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA='>
+ <rect x='0.00' y='0.00' width='360.00' height='576.00' />
+ </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA=)'><text x='181.29' y='557.28' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='26.22px' lengthAdjust='spacingAndGlyphs'>Time</text></g>
+<g clip-path='url(#cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(12.96,306.81) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='52.02px' lengthAdjust='spacingAndGlyphs'>Observed</text></g>
+<defs>
+ <clipPath id='cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA=='>
+ <rect x='59.04' y='59.04' width='270.72' height='443.52' />
+ </clipPath>
+</defs>
+<circle cx='69.07' cy='77.69' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='69.07' cy='78.90' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='71.16' cy='269.24' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='71.16' cy='294.99' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='75.33' cy='444.28' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='75.33' cy='455.55' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='83.69' cy='481.71' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='83.69' cy='484.93' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='98.31' cy='472.05' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='127.56' cy='473.26' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='257.07' cy='483.72' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='319.73' cy='472.05' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='71.16,335.46 74.79,341.76 67.52,341.76 71.16,335.46 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='71.16,331.44 74.79,337.73 67.52,337.73 71.16,331.44 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='75.33,343.91 78.97,350.21 71.70,350.21 75.33,343.91 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='75.33,321.78 78.97,328.08 71.70,328.08 75.33,321.78 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='83.69,421.17 87.33,427.47 80.05,427.47 83.69,421.17 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='83.69,410.31 87.33,416.60 80.05,416.60 83.69,410.31 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='98.31,458.60 101.95,464.89 94.67,464.89 98.31,458.60 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='98.31,477.11 101.95,483.40 94.67,483.40 98.31,477.11 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='194.40,479.92 198.04,486.22 190.76,486.22 194.40,479.92 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='257.07,469.06 260.70,475.36 253.43,475.36 257.07,469.06 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='319.73,475.90 323.37,482.20 316.10,482.20 319.73,475.90 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='319.73,479.52 323.37,485.82 316.10,485.82 319.73,479.52 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='67.34' y1='466.82' x2='74.97' y2='466.82' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='71.16' y1='470.64' x2='71.16' y2='463.00' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='71.51' y1='402.03' x2='79.15' y2='402.03' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='75.33' y1='405.85' x2='75.33' y2='398.21' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='71.51' y1='408.47' x2='79.15' y2='408.47' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='75.33' y1='412.29' x2='75.33' y2='404.65' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='79.87' y1='317.12' x2='87.51' y2='317.12' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='83.69' y1='320.94' x2='83.69' y2='313.31' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='79.87' y1='312.70' x2='87.51' y2='312.70' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='83.69' y1='316.52' x2='83.69' y2='308.88' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='94.49' y1='287.35' x2='102.13' y2='287.35' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='98.31' y1='291.16' x2='98.31' y2='283.53' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='94.49' y1='307.87' x2='102.13' y2='307.87' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='98.31' y1='311.69' x2='98.31' y2='304.05' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='123.74' y1='346.90' x2='131.37' y2='346.90' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='127.56' y1='350.72' x2='127.56' y2='343.08' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='123.74' y1='353.34' x2='131.37' y2='353.34' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='127.56' y1='357.16' x2='127.56' y2='349.52' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='190.58' y1='410.48' x2='198.22' y2='410.48' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='194.40' y1='414.30' x2='194.40' y2='406.66' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='190.58' y1='415.31' x2='198.22' y2='415.31' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='194.40' y1='419.13' x2='194.40' y2='411.49' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='253.25' y1='443.48' x2='260.89' y2='443.48' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='257.07' y1='447.30' x2='257.07' y2='439.66' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='253.25' y1='442.67' x2='260.89' y2='442.67' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='257.07' y1='446.49' x2='257.07' y2='438.86' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='315.91' y1='446.70' x2='323.55' y2='446.70' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='319.73' y1='450.52' x2='319.73' y2='442.88' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='315.91' y1='472.85' x2='323.55' y2='472.85' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='319.73' y1='476.67' x2='319.73' y2='469.04' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='69.07,75.47 71.60,318.44 74.13,417.65 76.66,458.17 79.19,474.71 81.73,481.47 84.26,484.23 86.79,485.36 89.32,485.82 91.85,486.00 94.39,486.08 96.92,486.11 99.45,486.12 101.98,486.13 104.51,486.13 107.05,486.13 109.58,486.13 112.11,486.13 114.64,486.13 117.17,486.13 119.71,486.13 122.24,486.13 124.77,486.13 127.30,486.13 129.83,486.13 132.37,486.13 134.90,486.13 137.43,486.13 139.96,486.13 142.49,486.13 145.03,486.13 147.56,486.13 150.09,486.13 152.62,486.13 155.15,486.13 157.69,486.13 160.22,486.13 162.75,486.13 165.28,486.13 167.81,486.13 170.35,486.13 172.88,486.13 175.41,486.13 177.94,486.13 180.47,486.13 183.01,486.13 185.54,486.13 188.07,486.13 190.60,486.13 193.13,486.13 195.67,486.13 198.20,486.13 200.73,486.13 203.26,486.13 205.79,486.13 208.33,486.13 210.86,486.13 213.39,486.13 215.92,486.13 218.45,486.13 220.99,486.13 223.52,486.13 226.05,486.13 228.58,486.13 231.11,486.13 233.65,486.13 236.18,486.13 238.71,486.13 241.24,486.13 243.77,486.13 246.31,486.13 248.84,486.13 251.37,486.13 253.90,486.13 256.43,486.13 258.97,486.13 261.50,486.13 264.03,486.13 266.56,486.13 269.09,486.13 271.63,486.13 274.16,486.13 276.69,486.13 279.22,486.13 281.75,486.13 284.29,486.13 286.82,486.13 289.35,486.13 291.88,486.13 294.41,486.13 296.95,486.13 299.48,486.13 302.01,486.13 304.54,486.13 307.07,486.13 309.61,486.13 312.14,486.13 314.67,486.13 317.20,486.13 319.73,486.13 ' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='69.07,486.13 71.60,333.73 74.13,317.73 76.66,343.39 79.19,376.31 81.73,405.38 84.26,428.15 86.79,445.03 89.32,457.21 91.85,465.86 94.39,471.96 96.92,476.24 99.45,479.23 101.98,481.32 104.51,482.78 107.05,483.80 109.58,484.51 112.11,485.00 114.64,485.34 117.17,485.58 119.71,485.75 122.24,485.87 124.77,485.95 127.30,486.00 129.83,486.04 132.37,486.07 134.90,486.09 137.43,486.10 139.96,486.11 142.49,486.12 145.03,486.12 147.56,486.13 150.09,486.13 152.62,486.13 155.15,486.13 157.69,486.13 160.22,486.13 162.75,486.13 165.28,486.13 167.81,486.13 170.35,486.13 172.88,486.13 175.41,486.13 177.94,486.13 180.47,486.13 183.01,486.13 185.54,486.13 188.07,486.13 190.60,486.13 193.13,486.13 195.67,486.13 198.20,486.13 200.73,486.13 203.26,486.13 205.79,486.13 208.33,486.13 210.86,486.13 213.39,486.13 215.92,486.13 218.45,486.13 220.99,486.13 223.52,486.13 226.05,486.13 228.58,486.13 231.11,486.13 233.65,486.13 236.18,486.13 238.71,486.13 241.24,486.13 243.77,486.13 246.31,486.13 248.84,486.13 251.37,486.13 253.90,486.13 256.43,486.13 258.97,486.13 261.50,486.13 264.03,486.13 266.56,486.13 269.09,486.13 271.63,486.13 274.16,486.13 276.69,486.13 279.22,486.13 281.75,486.13 284.29,486.13 286.82,486.13 289.35,486.13 291.88,486.13 294.41,486.13 296.95,486.13 299.48,486.13 302.01,486.13 304.54,486.13 307.07,486.13 309.61,486.13 312.14,486.13 314.67,486.13 317.20,486.13 319.73,486.13 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='69.07,486.13 71.60,461.63 74.13,419.15 76.66,380.16 79.19,350.09 81.73,328.88 84.26,314.90 86.79,306.36 89.32,301.75 91.85,299.93 94.39,300.04 96.92,301.48 99.45,303.81 101.98,306.73 104.51,310.04 107.05,313.59 109.58,317.26 112.11,321.01 114.64,324.76 117.17,328.51 119.71,332.21 122.24,335.86 124.77,339.45 127.30,342.96 129.83,346.41 132.37,349.78 134.90,353.07 137.43,356.29 139.96,359.43 142.49,362.50 145.03,365.49 147.56,368.42 150.09,371.27 152.62,374.06 155.15,376.77 157.69,379.43 160.22,382.01 162.75,384.54 165.28,387.00 167.81,389.41 170.35,391.75 172.88,394.04 175.41,396.27 177.94,398.45 180.47,400.58 183.01,402.66 185.54,404.68 188.07,406.66 190.60,408.58 193.13,410.46 195.67,412.30 198.20,414.09 200.73,415.84 203.26,417.54 205.79,419.21 208.33,420.83 210.86,422.41 213.39,423.96 215.92,425.47 218.45,426.94 220.99,428.37 223.52,429.77 226.05,431.14 228.58,432.47 231.11,433.78 233.65,435.05 236.18,436.28 238.71,437.49 241.24,438.67 243.77,439.82 246.31,440.95 248.84,442.04 251.37,443.11 253.90,444.16 256.43,445.17 258.97,446.17 261.50,447.14 264.03,448.08 266.56,449.01 269.09,449.91 271.63,450.78 274.16,451.64 276.69,452.48 279.22,453.29 281.75,454.09 284.29,454.87 286.82,455.63 289.35,456.37 291.88,457.09 294.41,457.79 296.95,458.48 299.48,459.15 302.01,459.81 304.54,460.44 307.07,461.07 309.61,461.67 312.14,462.27 314.67,462.85 317.20,463.41 319.73,463.96 ' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<rect x='241.17' y='81.22' width='75.06' height='57.60' style='stroke-width: 0.75; fill: #FFFFFF;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='244.41' y1='95.62' x2='266.01' y2='95.62' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='244.41' y1='110.02' x2='266.01' y2='110.02' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='244.41' y1='124.42' x2='266.01' y2='124.42' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='255.21' cy='95.62' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='255.21,105.82 258.84,112.12 251.57,112.12 255.21,105.82 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='251.39' y1='124.42' x2='259.03' y2='124.42' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='255.21' y1='128.23' x2='255.21' y2='120.60' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<g clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)'><text x='276.81' y='99.74' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='34.02px' lengthAdjust='spacingAndGlyphs'>parent</text></g>
+<g clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)'><text x='276.81' y='114.14' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='16.67px' lengthAdjust='spacingAndGlyphs'>M1</text></g>
+<g clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)'><text x='276.81' y='128.54' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='16.67px' lengthAdjust='spacingAndGlyphs'>M2</text></g>
+<defs>
+ <clipPath id='cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ='>
+ <rect x='419.04' y='59.04' width='270.72' height='443.52' />
+ </clipPath>
+</defs>
+<defs>
+ <clipPath id='cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA='>
+ <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+ </clipPath>
+</defs>
+<line x1='429.07' y1='502.56' x2='652.36' y2='502.56' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='429.07' y1='502.56' x2='429.07' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='473.73' y1='502.56' x2='473.73' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='518.38' y1='502.56' x2='518.38' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='563.04' y1='502.56' x2='563.04' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='607.70' y1='502.56' x2='607.70' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='652.36' y1='502.56' x2='652.36' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='425.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='467.05' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='511.71' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='556.37' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='601.03' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='642.35' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text></g>
+<line x1='419.04' y1='486.13' x2='419.04' y2='99.75' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='486.13' x2='411.84' y2='486.13' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='421.74' x2='411.84' y2='421.74' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='357.34' x2='411.84' y2='357.34' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='292.94' x2='411.84' y2='292.94' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='228.54' x2='411.84' y2='228.54' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='164.15' x2='411.84' y2='164.15' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='99.75' x2='411.84' y2='99.75' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,489.47) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,425.07) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,364.01) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>10</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,299.61) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>15</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,235.22) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,170.82) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>25</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,106.42) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>30</text></g>
+<polyline points='419.04,502.56 689.76,502.56 689.76,59.04 419.04,59.04 419.04,502.56 ' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<defs>
+ <clipPath id='cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA=='>
+ <rect x='360.00' y='0.00' width='360.00' height='576.00' />
+ </clipPath>
+</defs>
+<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text x='529.06' y='557.28' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='50.69px' lengthAdjust='spacingAndGlyphs'>Predicted</text></g>
+<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text transform='translate(372.96,326.16) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='90.72px' lengthAdjust='spacingAndGlyphs'>Squared residual</text></g>
+<defs>
+ <clipPath id='cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ='>
+ <rect x='419.04' y='59.04' width='270.72' height='443.52' />
+ </clipPath>
+</defs>
+<circle cx='656.95' cy='482.19' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='656.95' cy='476.76' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='537.91' cy='143.91' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='537.91' cy='466.16' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='453.90' cy='479.44' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='453.90' cy='326.46' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='430.36' cy='482.64' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='430.36' cy='485.13' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='429.07' cy='328.66' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='429.07' cy='354.25' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='429.07' cy='481.50' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='429.07' cy='328.36' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='506.65,446.70 510.29,453.00 503.02,453.00 506.65,446.70 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='506.65,391.21 510.29,397.51 503.02,397.51 506.65,391.21 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='517.01,149.17 520.64,155.47 513.37,155.47 517.01,149.17 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='517.01,479.69 520.64,485.99 513.37,485.99 517.01,479.69 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='463.78,479.37 467.42,485.67 460.14,485.67 463.78,479.37 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='463.78,416.53 467.42,422.83 460.14,422.83 463.78,416.53 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='433.57,297.56 437.21,303.85 429.93,303.85 433.57,297.56 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='433.57,473.35 437.21,479.65 429.93,479.65 433.57,473.35 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='429.07,478.71 432.70,485.01 425.43,485.01 429.07,478.71 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='429.07,350.05 432.70,356.35 425.43,356.35 429.07,350.05 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='429.07,452.96 432.70,459.25 425.43,459.25 429.07,452.96 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='429.07,477.30 432.70,483.60 425.43,483.60 429.07,477.30 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='435.17' y1='484.50' x2='442.81' y2='484.50' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='438.99' y1='488.32' x2='438.99' y2='480.68' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='473.23' y1='481.64' x2='480.87' y2='481.64' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='477.05' y1='485.46' x2='477.05' y2='477.83' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='473.23' y1='424.34' x2='480.87' y2='424.34' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='477.05' y1='428.16' x2='477.05' y2='420.53' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='518.82' y1='486.01' x2='526.45' y2='486.01' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='522.64' y1='489.83' x2='522.64' y2='482.20' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='518.82' y1='467.70' x2='526.45' y2='467.70' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='522.64' y1='471.52' x2='522.64' y2='463.89' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='527.05' y1='299.30' x2='534.69' y2='299.30' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='530.87' y1='303.12' x2='530.87' y2='295.48' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='527.05' y1='464.66' x2='534.69' y2='464.66' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='530.87' y1='468.48' x2='530.87' y2='460.84' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='504.50' y1='475.89' x2='512.14' y2='475.89' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='508.32' y1='479.70' x2='508.32' y2='472.07' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='504.50' y1='406.15' x2='512.14' y2='406.15' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='508.32' y1='409.97' x2='508.32' y2='402.33' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='466.72' y1='485.48' x2='474.36' y2='485.48' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='470.54' y1='489.30' x2='470.54' y2='481.66' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='466.72' y1='473.89' x2='474.36' y2='473.89' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='470.54' y1='477.71' x2='470.54' y2='470.07' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='447.84' y1='483.12' x2='455.47' y2='483.12' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='451.66' y1='486.94' x2='451.66' y2='479.30' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='447.84' y1='480.11' x2='455.47' y2='480.11' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='451.66' y1='483.93' x2='451.66' y2='476.29' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='437.55' y1='249.05' x2='445.19' y2='249.05' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='441.37' y1='252.86' x2='441.37' y2='245.23' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='437.55' y1='423.26' x2='445.19' y2='423.26' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='441.37' y1='427.07' x2='441.37' y2='419.44' style='stroke-width: 0.75; stroke: #00CD00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='419.04' y1='402.95' x2='689.76' y2='402.95' style='stroke-width: 0.75; stroke-dasharray: 4.00,4.00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='419.04' y1='411.92' x2='689.76' y2='411.92' style='stroke-width: 0.75; stroke: #FF0000; stroke-dasharray: 4.00,4.00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='419.04' y1='439.01' x2='689.76' y2='439.01' style='stroke-width: 0.75; stroke: #00CD00; stroke-dasharray: 4.00,4.00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<defs>
+ <clipPath id='cpNTkuMDR8Njg5Ljc2fDUwMi41Nnw1OS4wNA=='>
+ <rect x='59.04' y='59.04' width='630.72' height='443.52' />
+ </clipPath>
+</defs>
+</svg>
diff --git a/tests/figs/plotting/mkinfit-plot-for-focus-c-with-sep-true.svg b/tests/figs/plotting/mkinfit-plot-for-focus-c-with-sep-true.svg
index 2beb762c..327161da 100644
--- a/tests/figs/plotting/mkinfit-plot-for-focus-c-with-sep-true.svg
+++ b/tests/figs/plotting/mkinfit-plot-for-focus-c-with-sep-true.svg
@@ -86,21 +86,21 @@
<rect x='0.00' y='0.00' width='720.00' height='576.00' />
</clipPath>
</defs>
-<line x1='429.07' y1='502.56' x2='681.84' y2='502.56' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='429.07' y1='502.56' x2='658.86' y2='502.56' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
<line x1='429.07' y1='502.56' x2='429.07' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
-<line x1='471.20' y1='502.56' x2='471.20' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
-<line x1='513.32' y1='502.56' x2='513.32' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
-<line x1='555.45' y1='502.56' x2='555.45' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
-<line x1='597.58' y1='502.56' x2='597.58' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
-<line x1='639.71' y1='502.56' x2='639.71' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
-<line x1='681.84' y1='502.56' x2='681.84' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='467.37' y1='502.56' x2='467.37' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='505.66' y1='502.56' x2='505.66' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='543.96' y1='502.56' x2='543.96' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='582.26' y1='502.56' x2='582.26' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='620.56' y1='502.56' x2='620.56' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='658.86' y1='502.56' x2='658.86' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='425.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text></g>
-<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='464.52' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text></g>
-<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='506.65' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text></g>
-<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='548.78' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text></g>
-<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='590.91' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text></g>
-<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='629.70' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text></g>
-<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='671.83' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>120</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='460.69' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='498.99' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='537.29' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='575.59' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='610.55' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='648.85' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>120</text></g>
<line x1='419.04' y1='480.61' x2='419.04' y2='80.99' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
<line x1='419.04' y1='480.61' x2='411.84' y2='480.61' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
<line x1='419.04' y1='380.71' x2='411.84' y2='380.71' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
@@ -119,21 +119,21 @@
</clipPath>
</defs>
<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text x='541.29' y='557.28' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='26.22px' lengthAdjust='spacingAndGlyphs'>Time</text></g>
-<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text transform='translate(372.96,307.15) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='52.70px' lengthAdjust='spacingAndGlyphs'>Residuals</text></g>
+<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text transform='translate(372.96,304.15) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='46.70px' lengthAdjust='spacingAndGlyphs'>Residual</text></g>
<defs>
<clipPath id='cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ='>
<rect x='419.04' y='59.04' width='270.72' height='443.52' />
</clipPath>
</defs>
<circle cx='429.07' cy='228.69' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
-<circle cx='431.17' cy='337.59' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
-<circle cx='435.39' cy='341.43' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
-<circle cx='443.81' cy='182.53' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
-<circle cx='458.56' cy='109.69' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
-<circle cx='488.05' cy='149.24' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
-<circle cx='561.77' cy='200.88' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
-<circle cx='620.75' cy='202.87' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
-<circle cx='679.73' cy='268.81' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='430.98' cy='337.59' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='434.81' cy='341.43' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='442.47' cy='182.53' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='455.88' cy='109.69' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='482.69' cy='149.24' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='549.71' cy='200.88' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='603.33' cy='202.87' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='656.95' cy='268.81' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
<line x1='419.04' y1='280.80' x2='689.76' y2='280.80' style='stroke-width: 0.75; stroke-dasharray: 4.00,4.00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
<defs>
<clipPath id='cpNTkuMDR8Njg5Ljc2fDUwMi41Nnw1OS4wNA=='>
diff --git a/tests/figs/plotting/plot-err-for-focus-d.svg b/tests/figs/plotting/plot-err-for-focus-d.svg
new file mode 100644
index 00000000..6c5cab19
--- /dev/null
+++ b/tests/figs/plotting/plot-err-for-focus-d.svg
@@ -0,0 +1,200 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 720.00 576.00'>
+<defs>
+ <style type='text/css'><![CDATA[
+ line, polyline, polygon, path, rect, circle {
+ fill: none;
+ stroke: #000000;
+ stroke-linecap: round;
+ stroke-linejoin: round;
+ stroke-miterlimit: 10.00;
+ }
+ ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<line x1='69.07' y1='502.56' x2='319.73' y2='502.56' style='stroke-width: 0.75;' />
+<line x1='69.07' y1='502.56' x2='69.07' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='110.84' y1='502.56' x2='110.84' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='152.62' y1='502.56' x2='152.62' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='194.40' y1='502.56' x2='194.40' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='236.18' y1='502.56' x2='236.18' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='277.96' y1='502.56' x2='277.96' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='319.73' y1='502.56' x2='319.73' y2='509.76' style='stroke-width: 0.75;' />
+<text x='65.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='104.17' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='145.95' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text x='187.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text x='229.51' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text x='267.95' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text>
+<text x='309.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>120</text>
+<line x1='59.04' y1='486.13' x2='59.04' y2='83.68' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='486.13' x2='51.84' y2='486.13' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='405.64' x2='51.84' y2='405.64' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='325.15' x2='51.84' y2='325.15' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='244.66' x2='51.84' y2='244.66' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='164.17' x2='51.84' y2='164.17' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='83.68' x2='51.84' y2='83.68' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,489.47) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text transform='translate(41.76,412.31) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text transform='translate(41.76,331.82) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text transform='translate(41.76,251.33) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,170.84) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,93.68) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text>
+<polyline points='59.04,502.56 329.76,502.56 329.76,59.04 59.04,59.04 59.04,502.56 ' style='stroke-width: 0.75;' />
+<defs>
+ <clipPath id='cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA='>
+ <rect x='0.00' y='0.00' width='360.00' height='576.00' />
+ </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA=)'><text x='181.29' y='557.28' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='26.22px' lengthAdjust='spacingAndGlyphs'>Time</text></g>
+<g clip-path='url(#cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(12.96,306.81) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='52.02px' lengthAdjust='spacingAndGlyphs'>Observed</text></g>
+<defs>
+ <clipPath id='cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA=='>
+ <rect x='59.04' y='59.04' width='270.72' height='443.52' />
+ </clipPath>
+</defs>
+<circle cx='69.07' cy='85.85' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='69.07' cy='75.47' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='71.16' cy='109.84' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='71.16' cy='113.86' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='75.33' cy='231.66' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='75.33' cy='208.48' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='83.69' cy='275.57' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='83.69' cy='264.26' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='98.31' cy='376.38' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='98.31' cy='378.92' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='112.93' cy='439.85' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='112.93' cy='439.29' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='142.18' cy='474.66' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='142.18' cy='474.42' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='173.51' cy='483.36' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='173.51' cy='483.60' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='225.73' cy='485.93' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='225.73' cy='485.89' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='71.16,462.46 74.79,468.75 67.52,468.75 71.16,462.46 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='71.16,459.24 74.79,465.53 67.52,465.53 71.16,459.24 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='75.33,429.98 78.97,436.28 71.70,436.28 75.33,429.98 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='75.33,429.78 78.97,436.07 71.70,436.07 75.33,429.78 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='83.69,389.49 87.33,395.79 80.05,395.79 83.69,389.49 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='83.69,383.45 87.33,389.75 80.05,389.75 83.69,383.45 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='98.31,314.15 101.95,320.45 94.67,320.45 98.31,314.15 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='98.31,348.28 101.95,354.58 94.67,354.58 98.31,348.28 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='112.93,303.36 116.57,309.66 109.30,309.66 112.93,303.36 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='112.93,295.03 116.57,301.33 109.30,301.33 112.93,295.03 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='142.18,316.04 145.81,322.34 138.54,322.34 142.18,316.04 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='142.18,329.20 145.81,335.50 138.54,335.50 142.18,329.20 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='173.51,316.16 177.15,322.46 169.87,322.46 173.51,316.16 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='173.51,320.91 177.15,327.21 169.87,327.21 173.51,320.91 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='225.73,320.59 229.37,326.89 222.10,326.89 225.73,320.59 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='225.73,345.70 229.37,352.00 222.10,352.00 225.73,345.70 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='277.96,357.01 281.59,363.31 274.32,363.31 277.96,357.01 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='277.96,348.60 281.59,354.90 274.32,354.90 277.96,348.60 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='319.73,380.72 323.37,387.01 316.10,387.01 319.73,380.72 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='319.73,347.88 323.37,354.17 316.10,354.17 319.73,347.88 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='69.07,85.29 71.60,130.49 74.13,170.59 76.66,206.17 79.19,237.74 81.73,265.74 84.26,290.59 86.79,312.64 89.32,332.20 91.85,349.56 94.39,364.96 96.92,378.62 99.45,390.74 101.98,401.50 104.51,411.04 107.05,419.51 109.58,427.02 112.11,433.69 114.64,439.60 117.17,444.85 119.71,449.50 122.24,453.63 124.77,457.30 127.30,460.55 129.83,463.43 132.37,465.99 134.90,468.26 137.43,470.28 139.96,472.07 142.49,473.65 145.03,475.06 147.56,476.31 150.09,477.42 152.62,478.40 155.15,479.27 157.69,480.04 160.22,480.73 162.75,481.34 165.28,481.88 167.81,482.36 170.35,482.79 172.88,483.16 175.41,483.50 177.94,483.80 180.47,484.06 183.01,484.29 185.54,484.50 188.07,484.68 190.60,484.85 193.13,484.99 195.67,485.12 198.20,485.24 200.73,485.34 203.26,485.43 205.79,485.51 208.33,485.58 210.86,485.64 213.39,485.70 215.92,485.74 218.45,485.79 220.99,485.83 223.52,485.86 226.05,485.89 228.58,485.92 231.11,485.94 233.65,485.97 236.18,485.98 238.71,486.00 241.24,486.02 243.77,486.03 246.31,486.04 248.84,486.05 251.37,486.06 253.90,486.07 256.43,486.08 258.97,486.08 261.50,486.09 264.03,486.09 266.56,486.10 269.09,486.10 271.63,486.11 274.16,486.11 276.69,486.11 279.22,486.11 281.75,486.12 284.29,486.12 286.82,486.12 289.35,486.12 291.88,486.12 294.41,486.12 296.95,486.12 299.48,486.13 302.01,486.13 304.54,486.13 307.07,486.13 309.61,486.13 312.14,486.13 314.67,486.13 317.20,486.13 319.73,486.13 ' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='69.07,486.13 71.60,462.96 74.13,442.54 76.66,424.57 79.19,408.78 81.73,394.90 84.26,382.74 86.79,372.09 89.32,362.79 91.85,354.67 94.39,347.61 96.92,341.48 99.45,336.18 101.98,331.62 104.51,327.71 107.05,324.38 109.58,321.55 112.11,319.18 114.64,317.21 117.17,315.59 119.71,314.29 122.24,313.26 124.77,312.48 127.30,311.92 129.83,311.55 132.37,311.34 134.90,311.29 137.43,311.37 139.96,311.56 142.49,311.86 145.03,312.25 147.56,312.71 150.09,313.24 152.62,313.84 155.15,314.49 157.69,315.18 160.22,315.92 162.75,316.69 165.28,317.49 167.81,318.31 170.35,319.16 172.88,320.03 175.41,320.91 177.94,321.81 180.47,322.72 183.01,323.64 185.54,324.56 188.07,325.50 190.60,326.43 193.13,327.37 195.67,328.32 198.20,329.26 200.73,330.21 203.26,331.15 205.79,332.10 208.33,333.04 210.86,333.98 213.39,334.92 215.92,335.86 218.45,336.79 220.99,337.72 223.52,338.64 226.05,339.56 228.58,340.48 231.11,341.40 233.65,342.31 236.18,343.21 238.71,344.11 241.24,345.00 243.77,345.89 246.31,346.78 248.84,347.66 251.37,348.54 253.90,349.41 256.43,350.27 258.97,351.13 261.50,351.99 264.03,352.84 266.56,353.68 269.09,354.52 271.63,355.36 274.16,356.19 276.69,357.01 279.22,357.83 281.75,358.64 284.29,359.45 286.82,360.26 289.35,361.06 291.88,361.85 294.41,362.64 296.95,363.43 299.48,364.21 302.01,364.98 304.54,365.75 307.07,366.51 309.61,367.27 312.14,368.03 314.67,368.78 317.20,369.53 319.73,370.27 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<rect x='241.17' y='81.22' width='75.06' height='43.20' style='stroke-width: 0.75; fill: #FFFFFF;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='244.41' y1='95.62' x2='266.01' y2='95.62' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='244.41' y1='110.02' x2='266.01' y2='110.02' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='255.21' cy='95.62' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='255.21,105.82 258.84,112.12 251.57,112.12 255.21,105.82 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<g clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)'><text x='276.81' y='99.74' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='34.02px' lengthAdjust='spacingAndGlyphs'>parent</text></g>
+<g clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)'><text x='276.81' y='114.14' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='16.67px' lengthAdjust='spacingAndGlyphs'>m1</text></g>
+<defs>
+ <clipPath id='cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ='>
+ <rect x='419.04' y='59.04' width='270.72' height='443.52' />
+ </clipPath>
+</defs>
+<defs>
+ <clipPath id='cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA='>
+ <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+ </clipPath>
+</defs>
+<line x1='429.07' y1='502.56' x2='657.86' y2='502.56' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='429.07' y1='502.56' x2='429.07' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='474.83' y1='502.56' x2='474.83' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='520.59' y1='502.56' x2='520.59' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='566.35' y1='502.56' x2='566.35' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='612.10' y1='502.56' x2='612.10' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='657.86' y1='502.56' x2='657.86' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='425.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='468.15' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='513.91' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='559.67' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='605.43' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='647.86' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text></g>
+<line x1='419.04' y1='486.13' x2='419.04' y2='78.64' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='486.13' x2='411.84' y2='486.13' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='427.92' x2='411.84' y2='427.92' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='369.71' x2='411.84' y2='369.71' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='311.49' x2='411.84' y2='311.49' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='253.28' x2='411.84' y2='253.28' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='195.07' x2='411.84' y2='195.07' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='136.85' x2='411.84' y2='136.85' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='78.64' x2='411.84' y2='78.64' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,489.47) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,434.59) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,376.38) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,318.16) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,259.95) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,205.07) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,146.86) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>120</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,88.65) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>140</text></g>
+<polyline points='419.04,502.56 689.76,502.56 689.76,59.04 419.04,59.04 419.04,502.56 ' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<defs>
+ <clipPath id='cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA=='>
+ <rect x='360.00' y='0.00' width='360.00' height='576.00' />
+ </clipPath>
+</defs>
+<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text x='529.06' y='557.28' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='50.69px' lengthAdjust='spacingAndGlyphs'>Predicted</text></g>
+<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text transform='translate(372.96,326.16) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='90.72px' lengthAdjust='spacingAndGlyphs'>Squared residual</text></g>
+<defs>
+ <clipPath id='cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ='>
+ <rect x='419.04' y='59.04' width='270.72' height='443.52' />
+ </clipPath>
+</defs>
+<circle cx='656.95' cy='486.08' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='656.95' cy='468.78' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='635.53' cy='455.16' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='635.53' cy='471.24' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='598.54' cy='143.91' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='598.54' cy='410.92' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='543.26' cy='469.26' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='543.26' cy='406.88' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='486.29' cy='471.30' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='486.29' cy='478.42' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='457.75' cy='483.02' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='457.75' cy='483.80' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='436.27' cy='485.88' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='436.27' cy='485.97' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='430.71' cy='486.13' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='430.71' cy='486.11' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='429.21' cy='486.13' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='429.21' cy='486.13' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='440.06,481.93 443.69,488.23 436.42,488.23 440.06,481.93 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='440.06,479.90 443.69,486.19 436.42,486.19 440.06,479.90 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='458.87,481.90 462.50,488.19 455.23,488.19 458.87,481.90 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='458.87,481.92 462.50,488.22 455.23,488.22 458.87,481.92 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='486.37,469.41 490.00,475.70 482.73,475.70 486.37,469.41 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='486.37,480.97 490.00,487.27 482.73,487.27 486.37,480.97 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='513.01,409.17 516.65,415.47 509.38,415.47 513.01,409.17 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='513.01,446.68 516.65,452.98 509.38,452.98 513.01,446.68 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='524.37,460.45 528.00,466.75 520.73,466.75 524.37,460.45 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='524.37,415.24 528.00,421.54 520.73,421.54 524.37,415.24 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='528.17,469.18 531.80,475.48 524.53,475.48 528.17,469.18 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='528.17,398.21 531.80,404.51 524.53,404.51 528.17,398.21 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='523.37,481.93 527.01,488.23 519.74,488.23 523.37,481.93 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='523.37,477.68 527.01,483.98 519.74,483.98 523.37,477.68 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='512.46,443.31 516.09,449.60 508.82,449.60 512.46,443.31 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='512.46,462.30 516.09,468.60 508.82,468.60 512.46,462.30 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='502.24,479.35 505.88,485.65 498.60,485.65 502.24,479.35 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='502.24,478.10 505.88,484.39 498.60,484.39 502.24,478.10 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='494.94,443.37 498.57,449.67 491.30,449.67 494.94,443.37 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='494.94,422.46 498.57,428.76 491.30,428.76 494.94,422.46 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='419.04' y1='457.70' x2='689.76' y2='457.70' style='stroke-width: 0.75; stroke-dasharray: 4.00,4.00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<defs>
+ <clipPath id='cpNTkuMDR8Njg5Ljc2fDUwMi41Nnw1OS4wNA=='>
+ <rect x='59.04' y='59.04' width='630.72' height='443.52' />
+ </clipPath>
+</defs>
+</svg>
diff --git a/tests/figs/plotting/plot-res-for-focus-d.svg b/tests/figs/plotting/plot-res-for-focus-d.svg
new file mode 100644
index 00000000..f8bab71f
--- /dev/null
+++ b/tests/figs/plotting/plot-res-for-focus-d.svg
@@ -0,0 +1,196 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 720.00 576.00'>
+<defs>
+ <style type='text/css'><![CDATA[
+ line, polyline, polygon, path, rect, circle {
+ fill: none;
+ stroke: #000000;
+ stroke-linecap: round;
+ stroke-linejoin: round;
+ stroke-miterlimit: 10.00;
+ }
+ ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<line x1='69.07' y1='502.56' x2='319.73' y2='502.56' style='stroke-width: 0.75;' />
+<line x1='69.07' y1='502.56' x2='69.07' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='110.84' y1='502.56' x2='110.84' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='152.62' y1='502.56' x2='152.62' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='194.40' y1='502.56' x2='194.40' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='236.18' y1='502.56' x2='236.18' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='277.96' y1='502.56' x2='277.96' y2='509.76' style='stroke-width: 0.75;' />
+<line x1='319.73' y1='502.56' x2='319.73' y2='509.76' style='stroke-width: 0.75;' />
+<text x='65.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='104.17' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='145.95' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text x='187.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text x='229.51' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text x='267.95' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text>
+<text x='309.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>120</text>
+<line x1='59.04' y1='486.13' x2='59.04' y2='83.68' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='486.13' x2='51.84' y2='486.13' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='405.64' x2='51.84' y2='405.64' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='325.15' x2='51.84' y2='325.15' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='244.66' x2='51.84' y2='244.66' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='164.17' x2='51.84' y2='164.17' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='83.68' x2='51.84' y2='83.68' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,489.47) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text transform='translate(41.76,412.31) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text transform='translate(41.76,331.82) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text>
+<text transform='translate(41.76,251.33) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,170.84) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,93.68) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text>
+<polyline points='59.04,502.56 329.76,502.56 329.76,59.04 59.04,59.04 59.04,502.56 ' style='stroke-width: 0.75;' />
+<defs>
+ <clipPath id='cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA='>
+ <rect x='0.00' y='0.00' width='360.00' height='576.00' />
+ </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA=)'><text x='181.29' y='557.28' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='26.22px' lengthAdjust='spacingAndGlyphs'>Time</text></g>
+<g clip-path='url(#cpMC4wMHwzNjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(12.96,306.81) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='52.02px' lengthAdjust='spacingAndGlyphs'>Observed</text></g>
+<defs>
+ <clipPath id='cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA=='>
+ <rect x='59.04' y='59.04' width='270.72' height='443.52' />
+ </clipPath>
+</defs>
+<circle cx='69.07' cy='85.85' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='69.07' cy='75.47' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='71.16' cy='109.84' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='71.16' cy='113.86' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='75.33' cy='231.66' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='75.33' cy='208.48' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='83.69' cy='275.57' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='83.69' cy='264.26' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='98.31' cy='376.38' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='98.31' cy='378.92' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='112.93' cy='439.85' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='112.93' cy='439.29' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='142.18' cy='474.66' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='142.18' cy='474.42' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='173.51' cy='483.36' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='173.51' cy='483.60' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='225.73' cy='485.93' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='225.73' cy='485.89' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='71.16,462.46 74.79,468.75 67.52,468.75 71.16,462.46 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='71.16,459.24 74.79,465.53 67.52,465.53 71.16,459.24 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='75.33,429.98 78.97,436.28 71.70,436.28 75.33,429.98 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='75.33,429.78 78.97,436.07 71.70,436.07 75.33,429.78 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='83.69,389.49 87.33,395.79 80.05,395.79 83.69,389.49 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='83.69,383.45 87.33,389.75 80.05,389.75 83.69,383.45 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='98.31,314.15 101.95,320.45 94.67,320.45 98.31,314.15 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='98.31,348.28 101.95,354.58 94.67,354.58 98.31,348.28 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='112.93,303.36 116.57,309.66 109.30,309.66 112.93,303.36 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='112.93,295.03 116.57,301.33 109.30,301.33 112.93,295.03 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='142.18,316.04 145.81,322.34 138.54,322.34 142.18,316.04 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='142.18,329.20 145.81,335.50 138.54,335.50 142.18,329.20 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='173.51,316.16 177.15,322.46 169.87,322.46 173.51,316.16 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='173.51,320.91 177.15,327.21 169.87,327.21 173.51,320.91 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='225.73,320.59 229.37,326.89 222.10,326.89 225.73,320.59 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='225.73,345.70 229.37,352.00 222.10,352.00 225.73,345.70 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='277.96,357.01 281.59,363.31 274.32,363.31 277.96,357.01 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='277.96,348.60 281.59,354.90 274.32,354.90 277.96,348.60 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='319.73,380.72 323.37,387.01 316.10,387.01 319.73,380.72 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='319.73,347.88 323.37,354.17 316.10,354.17 319.73,347.88 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='69.07,85.29 71.60,130.49 74.13,170.59 76.66,206.17 79.19,237.74 81.73,265.74 84.26,290.59 86.79,312.64 89.32,332.20 91.85,349.56 94.39,364.96 96.92,378.62 99.45,390.74 101.98,401.50 104.51,411.04 107.05,419.51 109.58,427.02 112.11,433.69 114.64,439.60 117.17,444.85 119.71,449.50 122.24,453.63 124.77,457.30 127.30,460.55 129.83,463.43 132.37,465.99 134.90,468.26 137.43,470.28 139.96,472.07 142.49,473.65 145.03,475.06 147.56,476.31 150.09,477.42 152.62,478.40 155.15,479.27 157.69,480.04 160.22,480.73 162.75,481.34 165.28,481.88 167.81,482.36 170.35,482.79 172.88,483.16 175.41,483.50 177.94,483.80 180.47,484.06 183.01,484.29 185.54,484.50 188.07,484.68 190.60,484.85 193.13,484.99 195.67,485.12 198.20,485.24 200.73,485.34 203.26,485.43 205.79,485.51 208.33,485.58 210.86,485.64 213.39,485.70 215.92,485.74 218.45,485.79 220.99,485.83 223.52,485.86 226.05,485.89 228.58,485.92 231.11,485.94 233.65,485.97 236.18,485.98 238.71,486.00 241.24,486.02 243.77,486.03 246.31,486.04 248.84,486.05 251.37,486.06 253.90,486.07 256.43,486.08 258.97,486.08 261.50,486.09 264.03,486.09 266.56,486.10 269.09,486.10 271.63,486.11 274.16,486.11 276.69,486.11 279.22,486.11 281.75,486.12 284.29,486.12 286.82,486.12 289.35,486.12 291.88,486.12 294.41,486.12 296.95,486.12 299.48,486.13 302.01,486.13 304.54,486.13 307.07,486.13 309.61,486.13 312.14,486.13 314.67,486.13 317.20,486.13 319.73,486.13 ' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='69.07,486.13 71.60,462.96 74.13,442.54 76.66,424.57 79.19,408.78 81.73,394.90 84.26,382.74 86.79,372.09 89.32,362.79 91.85,354.67 94.39,347.61 96.92,341.48 99.45,336.18 101.98,331.62 104.51,327.71 107.05,324.38 109.58,321.55 112.11,319.18 114.64,317.21 117.17,315.59 119.71,314.29 122.24,313.26 124.77,312.48 127.30,311.92 129.83,311.55 132.37,311.34 134.90,311.29 137.43,311.37 139.96,311.56 142.49,311.86 145.03,312.25 147.56,312.71 150.09,313.24 152.62,313.84 155.15,314.49 157.69,315.18 160.22,315.92 162.75,316.69 165.28,317.49 167.81,318.31 170.35,319.16 172.88,320.03 175.41,320.91 177.94,321.81 180.47,322.72 183.01,323.64 185.54,324.56 188.07,325.50 190.60,326.43 193.13,327.37 195.67,328.32 198.20,329.26 200.73,330.21 203.26,331.15 205.79,332.10 208.33,333.04 210.86,333.98 213.39,334.92 215.92,335.86 218.45,336.79 220.99,337.72 223.52,338.64 226.05,339.56 228.58,340.48 231.11,341.40 233.65,342.31 236.18,343.21 238.71,344.11 241.24,345.00 243.77,345.89 246.31,346.78 248.84,347.66 251.37,348.54 253.90,349.41 256.43,350.27 258.97,351.13 261.50,351.99 264.03,352.84 266.56,353.68 269.09,354.52 271.63,355.36 274.16,356.19 276.69,357.01 279.22,357.83 281.75,358.64 284.29,359.45 286.82,360.26 289.35,361.06 291.88,361.85 294.41,362.64 296.95,363.43 299.48,364.21 302.01,364.98 304.54,365.75 307.07,366.51 309.61,367.27 312.14,368.03 314.67,368.78 317.20,369.53 319.73,370.27 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<rect x='241.17' y='81.22' width='75.06' height='43.20' style='stroke-width: 0.75; fill: #FFFFFF;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='244.41' y1='95.62' x2='266.01' y2='95.62' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<line x1='244.41' y1='110.02' x2='266.01' y2='110.02' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<circle cx='255.21' cy='95.62' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<polyline points='255.21,105.82 258.84,112.12 251.57,112.12 255.21,105.82 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)' />
+<g clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)'><text x='276.81' y='99.74' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='34.02px' lengthAdjust='spacingAndGlyphs'>parent</text></g>
+<g clip-path='url(#cpNTkuMDR8MzI5Ljc2fDUwMi41Nnw1OS4wNA==)'><text x='276.81' y='114.14' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='16.67px' lengthAdjust='spacingAndGlyphs'>m1</text></g>
+<defs>
+ <clipPath id='cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ='>
+ <rect x='419.04' y='59.04' width='270.72' height='443.52' />
+ </clipPath>
+</defs>
+<defs>
+ <clipPath id='cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA='>
+ <rect x='0.00' y='0.00' width='720.00' height='576.00' />
+ </clipPath>
+</defs>
+<line x1='429.07' y1='502.56' x2='656.95' y2='502.56' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='429.07' y1='502.56' x2='429.07' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='467.05' y1='502.56' x2='467.05' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='505.03' y1='502.56' x2='505.03' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='543.01' y1='502.56' x2='543.01' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='580.99' y1='502.56' x2='580.99' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='618.97' y1='502.56' x2='618.97' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='656.95' y1='502.56' x2='656.95' y2='509.76' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='425.73' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='460.37' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>20</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='498.35' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>40</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='536.33' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>60</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='574.31' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>80</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='608.96' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text x='646.94' y='528.48' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>120</text></g>
+<line x1='419.04' y1='438.61' x2='419.04' y2='122.99' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='438.61' x2='411.84' y2='438.61' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='359.70' x2='411.84' y2='359.70' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='280.80' x2='411.84' y2='280.80' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='201.90' x2='411.84' y2='201.90' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<line x1='419.04' y1='122.99' x2='411.84' y2='122.99' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,447.28) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='17.34px' lengthAdjust='spacingAndGlyphs'>-10</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,365.04) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='10.67px' lengthAdjust='spacingAndGlyphs'>-5</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,284.14) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,205.23) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text></g>
+<g clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)'><text transform='translate(401.76,129.67) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='13.34px' lengthAdjust='spacingAndGlyphs'>10</text></g>
+<polyline points='419.04,502.56 689.76,502.56 689.76,59.04 419.04,59.04 419.04,502.56 ' style='stroke-width: 0.75;' clip-path='url(#cpMC4wMHw3MjAuMDB8NTc2LjAwfDAuMDA=)' />
+<defs>
+ <clipPath id='cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA=='>
+ <rect x='360.00' y='0.00' width='360.00' height='576.00' />
+ </clipPath>
+</defs>
+<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text x='541.29' y='557.28' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='26.22px' lengthAdjust='spacingAndGlyphs'>Time</text></g>
+<g clip-path='url(#cpMzYwLjAwfDcyMC4wMHw1NzYuMDB8MC4wMA==)'><text transform='translate(372.96,304.15) rotate(-90)' style='font-size: 12.00px; font-family: Liberation Sans;' textLength='46.70px' lengthAdjust='spacingAndGlyphs'>Residual</text></g>
+<defs>
+ <clipPath id='cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ='>
+ <rect x='419.04' y='59.04' width='270.72' height='443.52' />
+ </clipPath>
+</defs>
+<circle cx='429.07' cy='282.99' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='429.07' cy='242.27' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='430.97' cy='229.32' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='430.97' cy='245.10' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='434.76' cy='451.91' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='434.76' cy='361.02' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='442.36' cy='242.80' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='442.36' cy='198.46' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='455.65' cy='245.18' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='455.65' cy='255.12' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='468.95' cy='297.13' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='468.95' cy='294.92' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='495.53' cy='285.50' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='495.53' cy='284.55' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='524.02' cy='281.21' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='524.02' cy='282.16' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='571.49' cy='280.97' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<circle cx='571.49' cy='280.81' r='2.70pt' style='stroke-width: 0.75;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='430.97,276.02 434.60,282.31 427.33,282.31 430.97,276.02 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='430.97,263.39 434.60,269.69 427.33,269.69 430.97,263.39 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='434.76,278.40 438.40,284.70 431.13,284.70 434.76,278.40 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='434.76,277.61 438.40,283.91 431.13,283.91 434.76,277.61 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='442.36,309.34 446.00,315.64 438.72,315.64 442.36,309.34 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='442.36,285.67 446.00,291.97 438.72,291.97 442.36,285.67 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='455.65,197.70 459.29,204.00 452.02,204.00 455.65,197.70 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='455.65,331.52 459.29,337.82 452.02,337.82 455.65,331.52 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='468.95,233.73 472.58,240.03 465.31,240.03 468.95,233.73 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='468.95,201.06 472.58,207.36 465.31,207.36 468.95,201.06 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='495.53,309.63 499.17,315.93 491.90,315.93 495.53,309.63 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='495.53,361.23 499.17,367.53 491.90,367.53 495.53,361.23 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='524.02,277.05 527.65,283.35 520.38,283.35 524.02,277.05 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='524.02,295.67 527.65,301.97 520.38,301.97 524.02,295.67 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='571.49,219.11 575.13,225.41 567.85,225.41 571.49,219.11 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='571.49,317.58 575.13,323.88 567.85,323.88 571.49,317.58 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='618.97,291.46 622.60,297.76 615.33,297.76 618.97,291.46 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='618.97,258.48 622.60,264.78 615.33,264.78 618.97,258.48 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='656.95,334.04 660.58,340.34 653.31,340.34 656.95,334.04 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<polyline points='656.95,205.27 660.58,211.57 653.31,211.57 656.95,205.27 ' style='stroke-width: 0.75; stroke: #FF0000;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<line x1='419.04' y1='280.80' x2='689.76' y2='280.80' style='stroke-width: 0.75; stroke-dasharray: 4.00,4.00;' clip-path='url(#cpNDE5LjA0fDY4OS43Nnw1MDIuNTZ8NTkuMDQ=)' />
+<defs>
+ <clipPath id='cpNTkuMDR8Njg5Ljc2fDUwMi41Nnw1OS4wNA=='>
+ <rect x='59.04' y='59.04' width='630.72' height='443.52' />
+ </clipPath>
+</defs>
+</svg>
diff --git a/tests/testthat/test_error_models.R b/tests/testthat/test_error_models.R
index ba40bae6..40c1e6e8 100644
--- a/tests/testthat/test_error_models.R
+++ b/tests/testthat/test_error_models.R
@@ -23,6 +23,9 @@ test_that("Error model 'obs' works", {
fit_obs_1 <- mkinfit(m_synth_SFO_lin, SFO_lin_a, error_model = "obs", quiet = TRUE)
parms_2 <- round(fit_obs_1$bparms.optim, c(1, 4, 4, 4, 4, 4))
expect_equivalent(parms_2, c(102.1, 0.7389, 0.2982, 0.0203, 0.7677, 0.7246))
+ plot_errmod_fit_obs_1 <- function() plot_err(fit_obs_1, sep_obs = FALSE)
+
+ vdiffr::expect_doppelganger("plot_errmod with SFO_lin_a", plot_errmod_fit_obs_1)
})
test_that("Error model 'tc' works", {
diff --git a/tests/testthat/test_plots_summary_twa.R b/tests/testthat/test_plots_summary_twa.R
index 1dcf49ac..68ac7dcd 100644
--- a/tests/testthat/test_plots_summary_twa.R
+++ b/tests/testthat/test_plots_summary_twa.R
@@ -59,7 +59,7 @@ test_that("Summaries are reproducible", {
test_summary$Corr <- signif(test_summary$Corr, 1)
expect_known_output(print(test_summary), "summary_DFOP_FOCUS_C.txt")
- test_summary_2 <- summary(f_sfo_sfo,)
+ test_summary_2 <- summary(f_sfo_sfo)
test_summary_2$fit_version <- "Dummy 0.0 for testing"
test_summary_2$fit_Rversion <- "Dummy R version for testing"
test_summary_2$date.fit <- "Dummy date for testing"
@@ -75,19 +75,23 @@ test_that("Summaries are reproducible", {
context("Plotting")
-test_that("Plotting mmkin objects is reproducible", {
+test_that("Plotting mkinfit and mmkin objects is reproducible", {
skip_on_cran()
plot_sep_FOCUS_C_SFO <- function() plot_sep(fits[["SFO", "FOCUS_C"]])
mkinparplot_FOCUS_C_SFO <- function() mkinparplot(fits[["SFO", "FOCUS_C"]])
mkinerrplot_FOCUS_C_SFO <- function() mkinerrplot(fits[["SFO", "FOCUS_C"]])
mmkin_FOCUS_C <- function() plot(fits[, "FOCUS_C"])
mmkin_SFO <- function() plot(fits["SFO",])
+ plot_res_sfo_sfo <- function() plot_res(f_sfo_sfo)
+ plot_err_sfo_sfo <- function() plot_err(f_sfo_sfo)
vdiffr::expect_doppelganger("mkinfit plot for FOCUS C with sep = TRUE", plot_sep_FOCUS_C_SFO)
vdiffr::expect_doppelganger("mkinparplot for FOCUS C SFO", mkinparplot_FOCUS_C_SFO)
vdiffr::expect_doppelganger("mkinerrplot for FOCUS C SFO", mkinerrplot_FOCUS_C_SFO)
vdiffr::expect_doppelganger("mmkin plot for FOCUS C", mmkin_FOCUS_C)
vdiffr::expect_doppelganger("mmkin plot for SFO (FOCUS C and D)", mmkin_SFO)
+ vdiffr::expect_doppelganger("plot_res for FOCUS D", plot_res_sfo_sfo)
+ vdiffr::expect_doppelganger("plot_err for FOCUS D", plot_err_sfo_sfo)
})
context("AIC calculation")

Contact - Imprint