diff --git a/DESCRIPTION b/DESCRIPTION
index e88b8c5b..5bff282d 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Package: plot2
 Type: Package
 Title: Lightweight extension of base R plot
-Version: 0.0.2.9007
+Version: 0.0.2.9008
 Authors@R: 
   c(
     person(
@@ -34,7 +34,8 @@ Imports:
   graphics,
   grDevices,
   methods,
-  stats
+  stats,
+  utils
 Suggests:
   basetheme,
   fontquiver,
diff --git a/NEWS.md b/NEWS.md
index a63a7c42..04a103d4 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,28 +1,36 @@
-# plot2 0.0.2.9007 (development version)
+# plot2 0.0.2.9008 (development version)
 
 Breaking changes:
 
-- The grouped colour palette functionality has been unified into a single
-`palette` argument, with the former `palette.args` argument being deprecated
-(#30, @grantmcdermott). In addition, the default palette for small groups has
-been changed from "Okabe-Ito" to "R4" (#32 @grantmcdermott). 
+- Colour palettes are now controlled via a single `palette` argument that
+unifies the old `palette` and (deprecated) `palette.args` arguments. In
+addition, the default palette for small groups has been changed from "Okabe-Ito"
+to "R4". (#31 and #32 @grantmcdermott)
+- Legends are now controlled via a single `legend` argument that unifies the
+previous (deprecated) `legend.position` and `legend.args` arguments.  This
+change also enables several enhancements over the old legend behaviour; see
+below. (#34 @grantmcdermott)
 
 New features:
 
-- Add support for the argument `log` (#15, @etiennebacher).
-- Add support for grouped density plots (#18, @grantmcdermott).
-- Add support for (both grouped and non-grouped) "c", "h", "s", and "S" types
-(#26, @grantmcdermott).
+- Add support for the argument `log`. (#15 @etiennebacher)
+- Add support for grouped density plots. (#18 @grantmcdermott)
+- Add support for (both grouped and non-grouped) "c", "h", "s", and "S" types.
+(#26 @grantmcdermott)
 - Both the `pch` and `lty` arguments now accept a "by" convenience keyword for
-automatically adjusting plot characters and line types by groups (#28,
-@grantmcdermott).
+automatically adjusting plot characters and line types by groups. (#28
+@grantmcdermott)
+- Add outside ("!") placement support for remaining legend keywords, e.g.
+"top!", "left!", "topright!", etc. Users also gain finer control over many other
+aspects of the legend via the new unified `legend` argument, including changing
+labels, turning of the legend title, and so on. (#34 @grantmcdermott) 
 - Add support for `type="pointrange"` and `type="errobar"` plots (#35
 @vincentarelbundock and #40 @grantmcdermott)
 
 Bug fixes:
 
-- Setting `par(pch=X)` globally is now respected (#20, @grantmcdermott).
-- Fix x-axis scale/index when y is NULL (#24, @grantmcdermott)
+- Setting `par(pch=X)` globally is now respected. (#20 @grantmcdermott)
+- Fix x-axis scale/index when y is NULL. (#24 @grantmcdermott)
 
 # plot2 0.0.2
 
diff --git a/R/plot2.R b/R/plot2.R
index eae42e56..db43b198 100644
--- a/R/plot2.R
+++ b/R/plot2.R
@@ -66,13 +66,25 @@
 #'    unnamed arguments will be ignored and the key `n` argument, denoting the
 #'    number of colours, will automatically be spliced in as the number of
 #'    groups.
-#' @param legend.position one of the position keywords supported by `legend`.
-#'   In addition, `plot2` supports adding an exclamation point to two keywords
-#'   in particular: "bottom!" and "right!". These will place the legend outside
-#'   of the plotting area and adjust the margins of the plot accordingly. If no
-#'   legend is desired, then the user can also specify "none".
-#' @param legend.args list of additional arguments passed on to `legend`. At
-#'   the moment, only "bty", "horiz", "xpd", and "title" are supported.
+#' @param legend one of the following options:
+#'    - NULL (default), in which case the legend will be determined by the
+#'    grouping variable. If there is no group variable (i.e., `by` is NULL) then
+#'    no legend is drawn. If a grouping variable is detected, then an automatic
+#'    legend is drawn to the _outer_ right of the plotting area. Note that the
+#'    legend title and categories will automatically be inferred from the `by`
+#'    argument and underlying data.
+#'    - A convenience string indicating the legend position. The string should
+#'    correspond to one of the position keywords supported by the base `legend`
+#'    function, e.g. "right", "topleft", "bottom", etc. In addition, `plot2`
+#'    supports adding a trailing exclamation point to these keywords, e.g.
+#'    "right!", "topleft!", or "bottom!". This will place the legend _outside_
+#'    the plotting area and adjust the margins of the plot accordingly. Finally,
+#'    users can also turn off any legend printing by specifying "none".
+#'    - Logical value, where TRUE corresponds to the default case above (same 
+#'    effect as specifying NULL) and FALSE turns the legend off (same effect as
+#'    specifying "none").
+#'    - A list or, equivalently, a dedicated `legend()` function with supported
+#'    legend arguments, e.g. "bty", "horiz", and so forth.
 #' @param pch plotting "character", i.e., symbol to use. Character, integer, or
 #'   vector of length equal to the number of categories in the `by` variable.
 #'   See `pch`. In addition, users can supply a special `pch = "by"` convenience
@@ -146,7 +158,7 @@
 #' )
 #' 
 #' # The (automatic) legend position and look can be customized using
-#' # appropriate arguments. Note the trailing "!" in the `legend.position`
+#' # appropriate arguments. Note the trailing "!" in the `legend` position
 #' # argument below. This tells `plot2` to place the legend _outside_ the plot
 #' # area.
 #' 
@@ -154,8 +166,7 @@
 #'   Temp ~ Day | Month,
 #'   data = airquality,
 #'   type = "l",
-#'   legend.position = "bottom!", # "right!" (default), "none", or "topleft", etc.
-#'   legend.args = list(title = "Month of the year", bty = "o")
+#'   legend = legend("bottom!", title = "Month of the year", bty = "o")
 #' )
 #' 
 #' # Regular legend position keywords without the exclamation point (i.e., for
@@ -164,7 +175,7 @@
 #' plot2(
 #'   density(airquality$Temp),
 #'   by = airquality$Month, 
-#'   legend.position = "topright", legend.args = list(bty="o", title = "Month")
+#'   legend = legend("topright", bty="o", title = "Month")
 #' )
 #' 
 #' # The default group colours are inherited from either the "R4" or "Viridis"
@@ -238,8 +249,7 @@ plot2.default = function(
     asp = NA,
     grid = NULL,
     palette = NULL,
-    legend.position = NULL,
-    legend.args = list(),
+    legend = NULL,
     pch = NULL,
     col = NULL,
     lty = NULL,
@@ -248,6 +258,8 @@ plot2.default = function(
     ymax = NULL,
     ...) {
   
+  dots = list(...)
+  
   if (is.null(y)) {
     y = x
     x = seq_along(x)
@@ -256,7 +268,6 @@ plot2.default = function(
   
   if (is.null(xlab)) xlab = deparse(substitute(x))
   if (is.null(ylab)) ylab = deparse(substitute(y))
-  if (is.null(legend.args$title)) ltitle = deparse(substitute(by))
     
   xlabs = NULL  
   if (type %in% c("pointrange", "errorbar")) {
@@ -304,116 +315,192 @@ plot2.default = function(
   
   # Save current graphical parameters
   opar = par(no.readonly = TRUE)
-  # par_restore = FALSE
   
   # legend
   
-  bty = ifelse(!is.null(legend.args[["bty"]]), legend.args[["bty"]], "n")
-  horiz = ifelse(!is.null(legend.args[["horiz"]]), legend.args[["horiz"]], FALSE)
-  xpd = ifelse(!is.null(legend.args[["xpd"]]), legend.args[["xpd"]], NA)
+  w = h = outer_right = outer_bottom = NULL
+  legend.args = dots[["legend.args"]]
+  if (is.null(legend.args)) legend.args = list(x = NULL)
+  legend = substitute(legend)
   
-  ltitle = w = h = NULL
-  if(!is.null(legend.args[["title"]])) ltitle = legend.args[["title"]]
-
-  if (is.null(legend.position)) {
-    legend.position = ifelse(length(split_data)>1, "right!", "none")
+  if (isFALSE(legend)) {
+    legend = "none"
+    legend.args[["x"]] = "none"
+  }
+  if (isTRUE(legend)) {
+    legend = NULL
   }
   
-  if (legend.position!="none") {
-    
-    if (exists("title", where = legend.args)) {
-      ltitle = legend.args[["title"]]
-    } else if (!is.null(by)) {
-      ltitle = deparse(substitute(by))
+  if (is.null(by)) {
+    if (is.null(legend)) {
+      legend = "none"
+      legend.args[["x"]] = "none"
+    }
+  }
+  
+  if (is.null(legend)) {
+    legend.args[["x"]] = "right!"
+  } else if (is.character(legend)) {
+    legend.args = utils::modifyList(legend.args, list(x = legend))
+  } else if (class(legend) %in% c("call", "name")) {
+    largs = as.list(legend)
+    if (is.null(largs[["x"]])) {
+      lnms = names(largs)
+      # check second position b/c first will be a symbol 
+      if (is.null(lnms)) {
+        largs = stats::setNames(largs, c("", "x"))
+      } else if (length(largs)>=2 && lnms[2] == "") {
+        lnms[2] = "x"
+        largs = stats::setNames(largs, lnms)
+      } else {
+        largs[["x"]] = "right!"
+      }
     }
+    # Finally, combine with any pre-existing legend args (e.g., title from the by label)
+    legend.args = utils::modifyList(legend.args, largs, keep.null = TRUE)
+  }
+  ## Use `!exists` rather than `is.null` for title in case user specified no title
+  if (!exists("title", where = legend.args)) legend.args[["title"]] = deparse(substitute(by))
+  if (is.null(legend.args[["pch"]])) legend.args[["pch"]] = pch
+  if (is.null(legend.args[["lty"]])) legend.args[["lty"]] = lty
+  if (is.null(legend.args[["col"]])) legend.args[["col"]] = col
+  if (is.null(legend.args[["bty"]])) legend.args[["bty"]] = "n"
+  if (is.null(legend.args[["horiz"]])) legend.args[["horiz"]] = FALSE
+  if (is.null(legend.args[["xpd"]])) legend.args[["xpd"]] = NA
+  
+  if (legend.args[["x"]] != "none") {
     
     if (ngrps>1) {
-      legend = names(split_data)
+      lgnd_labs = names(split_data)
     } else {
-      legend = ylab
+      lgnd_labs = ylab
     }
+    if (is.null(legend.args[["legend"]])) {
+      legend.args[["legend"]] = lgnd_labs
+    } else if (length(lgnd_labs) != length(eval(legend.args[["legend"]]))) {
+      warning(
+        "\nUser-supplied legend labels do not match the number of groups.\n",
+        "Defaulting to automatic labels determined by the group splits in `by`,\n"
+        )
+      legend.args[["legend"]] = lgnd_labs
+    }
+    
+    # Catch to avoid recursive offsets, e.g., repeated plot2 calls with
+    # "bottom!" legend position.
+    par(omd = c(0,1,0,1))
     
-    if (legend.position=="right!") {
+    ## Legend to outer side of plot
+    if (grepl("right!$|left!$", legend.args[["x"]])) {
+      
+      outer_right = grepl("right!$", legend.args[["x"]])
       
-      # par_restore = TRUE
       # Margins of the plot (the first is the bottom margin)
-      par(mar=c(par("mar")[1:3], 0.1)) # remove right inner margin space
-    
+      if (outer_right) {
+        par(mar=c(par("mar")[1:3], 0.1)) # remove right inner margin space
+      } else if (par("mar")[4]==0.1) {
+        par(mar=c(par("mar")[1:3], 2.1)) # revert right margin if outer left
+      }
+      
       plot.new()
       
-      pos_anchor = "left"
-      horiz = FALSE
+      # legend.args[["x"]] = "left"
+      ## Switch position anchor (we'll adjust relative to the _opposite_ side below)
+      if (outer_right) legend.args[["x"]] = gsub("right!$", "left", legend.args[["x"]])
+      if (!outer_right) legend.args[["x"]] = gsub("left!$", "right", legend.args[["x"]])
+      
+      legend.args[["horiz"]] = FALSE
       
       lgnd = legend(
-        0, 0, bty = "n", legend = legend,
-        col = col,
-        pch = pch,
-        lty = lty,
-        title = ltitle,
-        plot = FALSE
+        0, 0, 
+        bty    = legend.args[["bty"]],
+        legend = legend.args[["legend"]],
+        pch    = legend.args[["pch"]],
+        lty    = legend.args[["lty"]],
+        col    = legend.args[["col"]],
+        title  = legend.args[["title"]],
+        xpd    = legend.args[["xpd"]],
+        plot   = FALSE
       )
-      # calculate right margin width in ndc
+      # calculate side margin width in ndc
       w = grconvertX(lgnd$rect$w, to="ndc") - grconvertX(0, to="ndc")
-      w = w*1.5
-      inset = c(1.025, 0)
-      par(omd = c(0, 1-w, 0, 1))
+      ## differing adjustments depending on side
+      if (outer_right) {
+        w = w*1.5
+        par(omd = c(0, 1-w, 0, 1))
+        legend.args[["inset"]] = c(1.025, 0)
+      } else {
+        w = w + grconvertX(par("mgp")[1], from = "lines", to = "ndc") # extra space for y-axis title
+        par(omd = c(w, 1, 0, 1))
+        legend.args[["inset"]] = c(1+w, 0)
+      }
       
-    } else if (legend.position=="bottom!") {
+    ## Legend at the outer top or bottom of plot
+    } else if (grepl("bottom!$|top!$", legend.args[["x"]])) {
+      
+      outer_bottom = grepl("bottom!$", legend.args[["x"]])
       
-      # par_restore = TRUE
       # Catch to reset right margin if previous legend position was "right!"
-      if (par("mar")[4]== 0.1) par(mar=c(par("mar")[1:3], par("mar")[2]-2)) 
+      if (par("mar")[4]== 0.1) par(mar=c(par("mar")[1:3], 2.1)) 
       
       plot.new()
       
-      pos_anchor = "top"
-      horiz = TRUE
+      ## Switch position anchor (we'll adjust relative to the _opposite_ side below)
+      if (outer_bottom) legend.args[["x"]] = gsub("bottom!$", "top", legend.args[["x"]])
+      if (!outer_bottom) legend.args[["x"]] = gsub("top!$", "bottom", legend.args[["x"]])
+      
+      legend.args[["horiz"]] = TRUE
       
       lgnd = legend(
-        0, 0, bty = "n", legend = legend,
-        horiz = horiz,
-        pch = pch,
-        lty = lty,
-        col = col,
-        # title = ltitle,
-        plot = FALSE
+        0, 0,
+        bty    = legend.args[["n"]],
+        legend = legend.args[["legend"]],
+        horiz  = legend.args[["horiz"]],
+        pch    = legend.args[["pch"]],
+        lty    = legend.args[["lty"]],
+        col    = legend.args[["col"]],
+        title  = legend.args[["title"]],
+        plot   = FALSE
       )
       # calculate bottom margin height in ndc
       h = grconvertX(lgnd$rect$h, to="ndc") - grconvertX(0, to="ndc")
-      inset = c(0, 1+2.5*h)
-      par(omd = c(0,1,0+h,1))
+      ## differing adjustments depending on side
+      if (outer_bottom) {
+        legend.args[["inset"]] = c(0, 1+2*h)
+        par(omd = c(0,1,0+h,1))
+      } else {
+        legend.args[["inset"]] = c(0, 1)
+        par(omd = c(0,1,0,1-h))
+      }
       
     } else {
-      pos_anchor = legend.position
-      inset = 0
-      horiz = horiz
+      # Catch to reset right margin if previous legend position was "right!"
+      if (par("mar")[4] == 0.1) par(mar=c(par("mar")[1:3], par("mar")[2]-2)) 
+      legend.args[["inset"]] = 0
       plot.new()
     }
     
-    legend(
-      x = pos_anchor, 
-      inset = inset,
-      legend = legend,
-      bty = bty,
-      horiz = horiz,
-      pch = pch,
-      lty = lty,
-      col = col,
-      xpd = xpd,
-      title = ltitle
-    )
+    do.call("legend", legend.args)
     
-  } else if(legend.position=="none") {
+  } else if(legend.args[["x"]]=="none") {
     
     plot.new()
     
   }
   
-  # plot window
-  plot.window(
-    xlim = xlim, ylim = ylim, 
-    asp = asp, log = log,
-    ...
+  ## Set the plot window
+  ## Problem: Passing extra args through ... (e.g., legend.args) to plot.window
+  ## triggers an annoying warning about unrecognized graphical params.
+  # plot.window(
+  #   xlim = xlim, ylim = ylim, 
+  #   asp = asp, log = log,
+  #   # ...
+  # )
+  ## Solution: Only pass on relevant args using name checking and do.call.
+  ## Idea borrowed from here: https://stackoverflow.com/a/4128401/4115816
+  pdots = dots[names(dots) %in% names(formals(graphics::plot.default))]
+  do.call(
+    "plot.window",
+    c(list(xlim = xlim, ylim = ylim, asp = asp, log = log), pdots)
   )
   
   # axes, plot.frame and grid
@@ -505,12 +592,25 @@ plot2.default = function(
     stop("`type` argument not supported.", call. = FALSE)
   }
 
-  title(
-    xlab = xlab,
-    ylab = ylab,
-    main = main,
-    sub = sub
+  # Titles. Note that we include a special catch for the main title if legend is
+  # "top!" (and main is specified in the first place).
+  if (is.null(main) || is.null(outer_bottom) || isTRUE(outer_bottom)) {
+    title(
+      xlab = xlab,
+      ylab = ylab,
+      main = main,
+      sub = sub
+    )
+  } else {
+    title(
+      xlab = xlab,
+      ylab = ylab,
+      sub = sub
     )
+    # Bump main up to make space for the legend beneath it
+    title(main = main, line = 5, xpd = NA)
+  }
+  
   
   if (par_restore) {
     on.exit(par(opar), add = TRUE)
@@ -537,9 +637,6 @@ plot2.formula = function(
     frame.plot = axes,
     asp = NA,
     grid = NULL,
-    # palette = NULL,
-    legend.position = NULL,
-    legend.args = list(),
     pch = NULL,
     col = NULL,
     lty = NULL,
@@ -571,6 +668,9 @@ plot2.formula = function(
       formula[[3L]][[1L]] = as.name("+")
     }
   }
+  
+  # placeholder for legend title
+  legend.args = list(x = NULL)
 
   ## extract x, y, by (if any) from formula
   m = match.call(expand.dots = FALSE)
@@ -584,22 +684,23 @@ plot2.formula = function(
   } 
   y = mf[,1L]
   x = mf[,2L]
-  by = NULL
+  by = bylab = NULL
   if (NCOL(mf) == 3L) {
     by = mf[,3L]
     bylab = names(mf)[3L]
+    legend.args[["title"]] = bylab
     if (!inherits(by, "factor")) {
       by = as.factor(by)
     }
   } else if (NCOL(mf) > 3L) {
     by = do.call("interaction", mf[, -(1L:2L)])
     bylab = sprintf("interaction(%s)", paste(names(mf)[-(1L:2L)], collapse = ", "))
+    legend.args[["title"]] = bylab
   }
 
   ## nice axis and legend labels
   if (is.null(ylab)) ylab = names(mf)[1L]
   if (is.null(xlab)) xlab = names(mf)[2L]
-  if (!is.null(by) && !exists("title", where = legend.args)) legend.args$title = bylab
   
   plot2.default(
     x = x, y = y, by = by, 
@@ -617,8 +718,6 @@ plot2.formula = function(
     frame.plot = frame.plot,
     asp = asp,
     grid = grid,
-    # palette = palette,
-    legend.position = legend.position,
     legend.args = legend.args,
     pch = pch,
     col = col,
@@ -649,9 +748,6 @@ plot2.density = function(
     frame.plot = axes,
     asp = NA,
     grid = NULL,
-    # palette = NULL,
-    legend.position = NULL,
-    legend.args = list(),
     pch = NULL,
     col = NULL,
     lty = NULL,
@@ -660,12 +756,14 @@ plot2.density = function(
     ) {
   
   object = x
+  legend.args = list(x = NULL)
+  # Grab by label to pass on legend title to plot2.default
+  legend.args[["title"]] = deparse(substitute(by))
   
   if (is.null(by)) {
     x = object$x
     y = object$y
   } else {
-    if (!exists("title", where = legend.args)) legend.args$title = deparse(substitute(by))
     x = eval(str2lang(object$data.name), envir = parent.frame())
     split_x = split(x, f = by)
     # joint bandwidth
@@ -728,8 +826,6 @@ plot2.density = function(
     frame.plot = frame.plot,
     asp = asp,
     grid = grid,
-    # palette = palette,
-    legend.position = legend.position,
     legend.args = legend.args,
     pch = pch,
     col = col,
diff --git a/README.Rmd b/README.Rmd
index 2aa9bf5e..bdbafeb9 100644
--- a/README.Rmd
+++ b/README.Rmd
@@ -202,7 +202,7 @@ In all of the preceding plots, you will have noticed that we get an automatic
 legend. The legend position and look can be customized using appropriate
 arguments. You can change (or turn off) the legend title and bounding box,
 switch the direction of the legend text, etc. Below, we particularly draw your
-attention to the trailing "!" in the `legend.position` argument. This tells
+attention to the trailing "!" in the `legend` position argument. This tells
 `plot2` to place the legend _outside_ the plot area.
 
 ```{r legend_bottom}
@@ -210,8 +210,7 @@ plot2(
   Temp ~ Day | Month,
   data = airquality,
   type = "l",
-  legend.position = "bottom!", # "right!" (default), "none", or "topleft", etc.
-  legend.args = list(title = "Month of the year", bty = "o")
+  legend = legend("bottom!", title = "Month of the year", bty = "o")
 )
 ```
 
@@ -222,8 +221,7 @@ inside the plot area) should still as per normal. Grouped density plot example:
 with(airquality, plot2(
   density(Temp),
   by = Month,
-  legend.position = "topright",
-  legend.args = list(title = "Month", bty="o")
+  legend = legend("topright", bty = "o")
 ))
 ```
 
diff --git a/README.md b/README.md
index 77774d26..98259c5c 100644
--- a/README.md
+++ b/README.md
@@ -203,17 +203,16 @@ In all of the preceding plots, you will have noticed that we get an
 automatic legend. The legend position and look can be customized using
 appropriate arguments. You can change (or turn off) the legend title and
 bounding box, switch the direction of the legend text, etc. Below, we
-particularly draw your attention to the trailing “!” in the
-`legend.position` argument. This tells `plot2` to place the legend
-*outside* the plot area.
+particularly draw your attention to the trailing “!” in the `legend`
+position argument. This tells `plot2` to place the legend *outside* the
+plot area.
 
 ``` r
 plot2(
   Temp ~ Day | Month,
   data = airquality,
   type = "l",
-  legend.position = "bottom!", # "right!" (default), "none", or "topleft", etc.
-  legend.args = list(title = "Month of the year", bty = "o")
+  legend = legend("bottom!", title = "Month of the year", bty = "o")
 )
 ```
 
@@ -227,8 +226,7 @@ plot example:
 with(airquality, plot2(
   density(Temp),
   by = Month,
-  legend.position = "topright",
-  legend.args = list(title = "Month", bty="o")
+  legend = legend("topright", bty = "o")
 ))
 ```
 
diff --git a/inst/tinytest/_tinysnapshot/legend_default_legend.svg b/inst/tinytest/_tinysnapshot/legend_default_legend.svg
new file mode 100644
index 00000000..335baea0
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_default_legend.svg
@@ -0,0 +1,231 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<rect x='193.01' y='453.66' width='146.77' height='44.89' style='stroke-width: 0.75; fill: #FFFFFF;' />
+<circle cx='203.81' cy='483.59' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='232.09' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='260.36' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='288.64' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='316.91' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='266.40' y='468.62' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='93.40px' lengthAdjust='spacingAndGlyphs'>Month of the year</text>
+<text x='214.61' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='242.89' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='271.16' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='299.44' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='327.71' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.60' y1='382.34' x2='445.60' y2='382.34' style='stroke-width: 0.75;' />
+<line x1='61.60' y1='382.34' x2='61.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='125.60' y1='382.34' x2='125.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='189.60' y1='382.34' x2='189.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='253.60' y1='382.34' x2='253.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='317.60' y1='382.34' x2='317.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='381.60' y1='382.34' x2='381.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='445.60' y1='382.34' x2='445.60' y2='389.54' style='stroke-width: 0.75;' />
+<text x='61.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='125.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='189.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='253.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='317.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='381.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='445.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='341.16' x2='59.04' y2='122.12' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='341.16' x2='51.84' y2='341.16' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='268.15' x2='51.84' y2='268.15' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='195.13' x2='51.84' y2='195.13' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='122.12' x2='51.84' y2='122.12' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,341.16) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,268.15) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,195.13) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,122.12) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,382.34 473.76,382.34 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA=='>
+    <rect x='59.04' y='59.04' width='414.72' height='323.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA==)'>
+<circle cx='74.40' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='87.20' cy='253.54' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='100.00' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='112.80' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='125.60' cy='370.36' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='151.20' cy='304.65' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='164.00' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='176.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='189.60' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='202.40' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='215.20' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='228.00' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='240.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='253.60' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.40' cy='311.95' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='279.20' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='292.00' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.60' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='330.40' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='343.20' cy='246.24' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='356.00' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='368.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='381.60' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.40' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='407.20' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.00' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='432.80' cy='187.83' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='445.60' cy='202.44' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='458.40' cy='224.34' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='74.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='87.20' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='100.00' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='138.40' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='151.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='164.00' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='189.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='215.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='279.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='292.00' cy='304.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='304.80' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.60' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='343.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='356.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='368.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='381.60' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='407.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.00' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='432.80' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='74.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='87.20' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='100.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='125.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='138.40' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='151.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='164.00' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='176.80' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='189.60' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='202.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='215.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='228.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='240.80' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='253.60' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='279.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='292.00' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='304.80' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='343.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='356.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='368.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='381.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='407.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.00' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='432.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='458.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='74.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='87.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='100.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='112.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='138.40' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='151.20' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='164.00' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='189.60' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='202.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='215.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='279.20' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='304.80' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.60' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='343.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='356.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='368.80' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='381.60' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='407.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.00' cy='71.01' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='432.80' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='445.60' cy='78.32' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='458.40' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='74.40' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='87.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='100.00' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='112.80' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='125.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='138.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='151.20' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='164.00' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='176.80' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='189.60' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='202.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='215.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='228.00' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='240.80' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='253.60' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='279.20' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.60' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='330.40' cy='311.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='343.20' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='356.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='368.80' cy='275.45' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='381.60' cy='319.25' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.40' cy='268.15' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='407.20' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='432.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='445.60' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg='>
+    <rect x='0.00' y='0.00' width='504.00' height='455.78' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg=)'>
+<text x='266.40' y='437.06' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,220.69) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_density_legend.svg b/inst/tinytest/_tinysnapshot/legend_density_legend.svg
new file mode 100644
index 00000000..beacab86
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_density_legend.svg
@@ -0,0 +1,84 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<rect x='139.01' y='453.66' width='254.77' height='44.89' style='stroke-width: 0.75; fill: #FFFFFF;' />
+<line x1='149.81' y1='483.59' x2='171.41' y2='483.59' style='stroke-width: 0.75;' />
+<line x1='199.69' y1='483.59' x2='221.29' y2='483.59' style='stroke-width: 0.75; stroke: #DF536B;' />
+<line x1='249.56' y1='483.59' x2='271.16' y2='483.59' style='stroke-width: 0.75; stroke: #61D04F;' />
+<line x1='299.44' y1='483.59' x2='321.04' y2='483.59' style='stroke-width: 0.75; stroke: #2297E6;' />
+<line x1='349.31' y1='483.59' x2='370.91' y2='483.59' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='266.40' y='468.62' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='93.40px' lengthAdjust='spacingAndGlyphs'>Month of the year</text>
+<text x='182.21' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='232.09' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='281.96' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='331.84' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='381.71' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='87.53' y1='382.34' x2='425.02' y2='382.34' style='stroke-width: 0.75;' />
+<line x1='87.53' y1='382.34' x2='87.53' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='155.03' y1='382.34' x2='155.03' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='222.53' y1='382.34' x2='222.53' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='290.02' y1='382.34' x2='290.02' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='357.52' y1='382.34' x2='357.52' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='425.02' y1='382.34' x2='425.02' y2='389.54' style='stroke-width: 0.75;' />
+<text x='87.53' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>50</text>
+<text x='155.03' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text x='222.53' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text x='290.02' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text x='357.52' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<text x='425.02' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text>
+<line x1='59.04' y1='370.55' x2='59.04' y2='103.43' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='370.55' x2='51.84' y2='370.55' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='303.77' x2='51.84' y2='303.77' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='236.99' x2='51.84' y2='236.99' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='170.21' x2='51.84' y2='170.21' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='103.43' x2='51.84' y2='103.43' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,370.55) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='23.36px' lengthAdjust='spacingAndGlyphs'>0.00</text>
+<text transform='translate(41.76,303.77) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='23.36px' lengthAdjust='spacingAndGlyphs'>0.02</text>
+<text transform='translate(41.76,236.99) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='23.36px' lengthAdjust='spacingAndGlyphs'>0.04</text>
+<text transform='translate(41.76,170.21) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='23.36px' lengthAdjust='spacingAndGlyphs'>0.06</text>
+<text transform='translate(41.76,103.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='23.36px' lengthAdjust='spacingAndGlyphs'>0.08</text>
+<polygon points='59.04,382.34 473.76,382.34 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA=='>
+    <rect x='59.04' y='59.04' width='414.72' height='323.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA==)'>
+<polyline points='74.40,370.17 74.94,370.13 75.48,370.08 76.02,370.04 76.56,369.99 77.10,369.93 77.64,369.87 78.18,369.81 78.72,369.74 79.26,369.66 79.80,369.58 80.34,369.48 80.88,369.39 81.42,369.28 81.96,369.17 82.50,369.05 83.04,368.91 83.58,368.77 84.12,368.62 84.66,368.45 85.20,368.27 85.74,368.08 86.28,367.88 86.82,367.66 87.36,367.43 87.90,367.17 88.44,366.90 88.98,366.62 89.52,366.31 90.06,365.99 90.60,365.65 91.14,365.27 91.68,364.89 92.22,364.48 92.76,364.03 93.30,363.57 93.84,363.08 94.38,362.55 94.92,362.01 95.46,361.43 96.01,360.82 96.55,360.18 97.09,359.50 97.63,358.78 98.17,358.04 98.71,357.26 99.25,356.43 99.79,355.58 100.33,354.67 100.87,353.73 101.41,352.75 101.95,351.73 102.49,350.65 103.03,349.55 103.57,348.39 104.11,347.18 104.65,345.95 105.19,344.65 105.73,343.30 106.27,341.93 106.81,340.49 107.35,339.00 107.89,337.48 108.43,335.90 108.97,334.27 109.51,332.62 110.05,330.89 110.59,329.13 111.13,327.33 111.67,325.47 112.21,323.57 112.75,321.64 113.29,319.65 113.83,317.63 114.37,315.58 114.91,313.47 115.45,311.34 115.99,309.17 116.53,306.96 117.07,304.73 117.61,302.47 118.15,300.18 118.69,297.86 119.23,295.53 119.77,293.17 120.31,290.79 120.85,288.40 121.39,286.00 121.93,283.59 122.47,281.17 123.01,278.74 123.55,276.31 124.09,273.89 124.63,271.47 125.17,269.05 125.71,266.65 126.25,264.25 126.79,261.87 127.33,259.51 127.87,257.18 128.41,254.86 128.95,252.57 129.49,250.31 130.03,248.08 130.57,245.89 131.11,243.73 131.65,241.61 132.19,239.54 132.73,237.51 133.27,235.51 133.81,233.58 134.35,231.69 134.89,229.84 135.43,228.06 135.97,226.33 136.51,224.64 137.05,223.04 137.59,221.47 138.13,219.96 138.68,218.53 139.22,217.14 139.76,215.82 140.30,214.57 140.84,213.37 141.38,212.23 141.92,211.17 142.46,210.15 143.00,209.20 143.54,208.32 144.08,207.48 144.62,206.72 145.16,206.02 145.70,205.36 146.24,204.78 146.78,204.25 147.32,203.76 147.86,203.35 148.40,202.98 148.94,202.66 149.48,202.40 150.02,202.18 150.56,202.00 151.10,201.89 151.64,201.81 152.18,201.76 152.72,201.77 153.26,201.82 153.80,201.89 154.34,202.01 154.88,202.15 155.42,202.32 155.96,202.53 156.50,202.76 157.04,203.01 157.58,203.30 158.12,203.60 158.66,203.91 159.20,204.25 159.74,204.59 160.28,204.95 160.82,205.32 161.36,205.69 161.90,206.08 162.44,206.46 162.98,206.85 163.52,207.23 164.06,207.62 164.60,207.99 165.14,208.37 165.68,208.73 166.22,209.08 166.76,209.42 167.30,209.75 167.84,210.07 168.38,210.36 168.92,210.64 169.46,210.90 170.00,211.13 170.54,211.35 171.08,211.54 171.62,211.71 172.16,211.85 172.70,211.97 173.24,212.05 173.78,212.11 174.32,212.15 174.86,212.15 175.40,212.13 175.94,212.08 176.48,212.00 177.02,211.89 177.56,211.76 178.10,211.59 178.64,211.40 179.18,211.19 179.72,210.94 180.26,210.67 180.80,210.38 181.35,210.06 181.89,209.73 182.43,209.38 182.97,209.01 183.51,208.62 184.05,208.22 184.59,207.81 185.13,207.38 185.67,206.95 186.21,206.52 186.75,206.08 187.29,205.64 187.83,205.20 188.37,204.76 188.91,204.34 189.45,203.92 189.99,203.51 190.53,203.12 191.07,202.74 191.61,202.38 192.15,202.05 192.69,201.74 193.23,201.46 193.77,201.21 194.31,200.99 194.85,200.79 195.39,200.65 195.93,200.54 196.47,200.46 197.01,200.43 197.55,200.45 198.09,200.50 198.63,200.61 199.17,200.77 199.71,200.96 200.25,201.22 200.79,201.53 201.33,201.87 201.87,202.30 202.41,202.76 202.95,203.26 203.49,203.84 204.03,204.46 204.57,205.12 205.11,205.86 205.65,206.63 206.19,207.45 206.73,208.33 207.27,209.25 207.81,210.21 208.35,211.23 208.89,212.29 209.43,213.38 209.97,214.52 210.51,215.69 211.05,216.90 211.59,218.15 212.13,219.41 212.67,220.71 213.21,222.04 213.75,223.39 214.29,224.76 214.83,226.14 215.37,227.54 215.91,228.96 216.45,230.38 216.99,231.81 217.53,233.24 218.07,234.68 218.61,236.11 219.15,237.54 219.69,238.97 220.23,240.39 220.77,241.79 221.31,243.19 221.85,244.57 222.39,245.93 222.93,247.27 223.47,248.60 224.02,249.89 224.56,251.17 225.10,252.43 225.64,253.65 226.18,254.85 226.72,256.02 227.26,257.16 227.80,258.27 228.34,259.36 228.88,260.41 229.42,261.43 229.96,262.43 230.50,263.38 231.04,264.31 231.58,265.22 232.12,266.09 232.66,266.93 233.20,267.75 233.74,268.54 234.28,269.30 234.82,270.04 235.36,270.75 235.90,271.45 236.44,272.12 236.98,272.77 237.52,273.40 238.06,274.02 238.60,274.62 239.14,275.21 239.68,275.78 240.22,276.35 240.76,276.90 241.30,277.45 241.84,277.99 242.38,278.53 242.92,279.06 243.46,279.59 244.00,280.12 244.54,280.65 245.08,281.19 245.62,281.72 246.16,282.26 246.70,282.81 247.24,283.36 247.78,283.92 248.32,284.49 248.86,285.07 249.40,285.65 249.94,286.25 250.48,286.85 251.02,287.47 251.56,288.09 252.10,288.73 252.64,289.38 253.18,290.04 253.72,290.71 254.26,291.39 254.80,292.08 255.34,292.77 255.88,293.48 256.42,294.20 256.96,294.92 257.50,295.66 258.04,296.39 258.58,297.14 259.12,297.89 259.66,298.64 260.20,299.40 260.74,300.16 261.28,300.93 261.82,301.69 262.36,302.45 262.90,303.22 263.44,303.98 263.98,304.74 264.52,305.49 265.06,306.24 265.60,306.99 266.14,307.73 266.69,308.46 267.23,309.19 267.77,309.91 268.31,310.62 268.85,311.32 269.39,312.02 269.93,312.70 270.47,313.37 271.01,314.03 271.55,314.68 272.09,315.32 272.63,315.95 273.17,316.56 273.71,317.17 274.25,317.76 274.79,318.35 275.33,318.92 275.87,319.48 276.41,320.03 276.95,320.57 277.49,321.10 278.03,321.62 278.57,322.14 279.11,322.64 279.65,323.13 280.19,323.62 280.73,324.10 281.27,324.58 281.81,325.05 282.35,325.51 282.89,325.97 283.43,326.43 283.97,326.88 284.51,327.33 285.05,327.78 285.59,328.23 286.13,328.68 286.67,329.13 287.21,329.58 287.75,330.03 288.29,330.48 288.83,330.93 289.37,331.39 289.91,331.85 290.45,332.32 290.99,332.79 291.53,333.26 292.07,333.74 292.61,334.23 293.15,334.72 293.69,335.22 294.23,335.72 294.77,336.23 295.31,336.74 295.85,337.26 296.39,337.79 296.93,338.32 297.47,338.86 298.01,339.40 298.55,339.96 299.09,340.51 299.63,341.07 300.17,341.64 300.71,342.21 301.25,342.78 301.79,343.36 302.33,343.94 302.87,344.52 303.41,345.11 303.95,345.70 304.49,346.29 305.03,346.88 305.57,347.47 306.11,348.06 306.65,348.65 307.19,349.23 307.73,349.82 308.27,350.40 308.81,350.98 309.36,351.56 309.90,352.13 310.44,352.70 310.98,353.26 311.52,353.82 312.06,354.37 312.60,354.91 313.14,355.45 313.68,355.98 314.22,356.49 314.76,357.01 315.30,357.51 315.84,358.00 316.38,358.49 316.92,358.96 317.46,359.42 318.00,359.88 318.54,360.32 319.08,360.75 319.62,361.17 320.16,361.58 320.70,361.98 321.24,362.37 321.78,362.75 322.32,363.11 322.86,363.46 323.40,363.81 323.94,364.14 324.48,364.46 325.02,364.76 325.56,365.06 326.10,365.35 326.64,365.62 327.18,365.89 327.72,366.14 328.26,366.38 328.80,366.62 329.34,366.84 329.88,367.05 330.42,367.26 330.96,367.45 331.50,367.64 332.04,367.81 332.58,367.98 333.12,368.14 333.66,368.29 334.20,368.44 334.74,368.57 335.28,368.70 335.82,368.83 336.36,368.94 336.90,369.05 337.44,369.15 337.98,369.25 338.52,369.34 339.06,369.43 339.60,369.51 340.14,369.58 340.68,369.65 341.22,369.72 341.76,369.78 342.30,369.84 342.84,369.89 343.38,369.94 343.92,369.99 344.46,370.03 345.00,370.08 345.54,370.11 346.08,370.15 346.62,370.18 347.16,370.21 347.70,370.24 348.24,370.27 348.78,370.29 349.32,370.31 349.86,370.33 350.40,370.35 ' style='stroke-width: 0.75;' />
+<polyline points='135.15,370.35 135.73,370.33 136.31,370.30 136.89,370.28 137.47,370.25 138.05,370.22 138.63,370.19 139.21,370.15 139.79,370.11 140.37,370.07 140.94,370.03 141.52,369.98 142.10,369.93 142.68,369.87 143.26,369.81 143.84,369.75 144.42,369.68 145.00,369.61 145.58,369.53 146.16,369.44 146.74,369.35 147.32,369.25 147.90,369.15 148.48,369.03 149.06,368.92 149.64,368.79 150.22,368.66 150.80,368.51 151.38,368.36 151.96,368.20 152.54,368.03 153.12,367.86 153.70,367.67 154.28,367.47 154.86,367.26 155.44,367.04 156.02,366.81 156.60,366.57 157.18,366.32 157.76,366.05 158.34,365.78 158.92,365.49 159.50,365.18 160.08,364.87 160.66,364.54 161.24,364.20 161.82,363.85 162.40,363.49 162.98,363.11 163.56,362.72 164.14,362.31 164.71,361.90 165.29,361.47 165.87,361.03 166.45,360.57 167.03,360.11 167.61,359.63 168.19,359.14 168.77,358.64 169.35,358.14 169.93,357.62 170.51,357.09 171.09,356.55 171.67,356.01 172.25,355.45 172.83,354.90 173.41,354.33 173.99,353.76 174.57,353.19 175.15,352.61 175.73,352.03 176.31,351.45 176.89,350.86 177.47,350.28 178.05,349.70 178.63,349.12 179.21,348.54 179.79,347.96 180.37,347.39 180.95,346.83 181.53,346.28 182.11,345.73 182.69,345.19 183.27,344.66 183.85,344.14 184.43,343.63 185.01,343.13 185.59,342.64 186.17,342.17 186.75,341.72 187.33,341.27 187.90,340.85 188.48,340.43 189.06,340.04 189.64,339.66 190.22,339.29 190.80,338.95 191.38,338.62 191.96,338.30 192.54,338.00 193.12,337.72 193.70,337.46 194.28,337.20 194.86,336.97 195.44,336.74 196.02,336.53 196.60,336.34 197.18,336.15 197.76,335.97 198.34,335.81 198.92,335.65 199.50,335.49 200.08,335.35 200.66,335.20 201.24,335.06 201.82,334.91 202.40,334.77 202.98,334.62 203.56,334.47 204.14,334.30 204.72,334.13 205.30,333.95 205.88,333.75 206.46,333.54 207.04,333.31 207.62,333.05 208.20,332.78 208.78,332.48 209.36,332.15 209.94,331.80 210.52,331.42 211.10,330.99 211.67,330.54 212.25,330.05 212.83,329.51 213.41,328.93 213.99,328.32 214.57,327.65 215.15,326.94 215.73,326.18 216.31,325.36 216.89,324.50 217.47,323.59 218.05,322.61 218.63,321.58 219.21,320.51 219.79,319.35 220.37,318.15 220.95,316.91 221.53,315.57 222.11,314.19 222.69,312.76 223.27,311.24 223.85,309.68 224.43,308.06 225.01,306.37 225.59,304.62 226.17,302.82 226.75,300.94 227.33,299.01 227.91,297.04 228.49,294.99 229.07,292.88 229.65,290.74 230.23,288.52 230.81,286.26 231.39,283.95 231.97,281.58 232.55,279.17 233.13,276.71 233.71,274.21 234.29,271.66 234.86,269.07 235.44,266.45 236.02,263.78 236.60,261.09 237.18,258.36 237.76,255.59 238.34,252.80 238.92,249.99 239.50,247.15 240.08,244.30 240.66,241.43 241.24,238.53 241.82,235.63 242.40,232.73 242.98,229.81 243.56,226.89 244.14,223.97 244.72,221.05 245.30,218.14 245.88,215.24 246.46,212.35 247.04,209.48 247.62,206.61 248.20,203.78 248.78,200.97 249.36,198.18 249.94,195.44 250.52,192.72 251.10,190.03 251.68,187.40 252.26,184.81 252.84,182.25 253.42,179.76 254.00,177.32 254.58,174.92 255.16,172.60 255.74,170.34 256.32,168.13 256.90,166.01 257.48,163.96 258.06,161.97 258.63,160.06 259.21,158.24 259.79,156.49 260.37,154.82 260.95,153.26 261.53,151.77 262.11,150.37 262.69,149.08 263.27,147.86 263.85,146.73 264.43,145.73 265.01,144.81 265.59,143.97 266.17,143.26 266.75,142.64 267.33,142.09 267.91,141.69 268.49,141.36 269.07,141.12 269.65,141.01 270.23,140.98 270.81,141.03 271.39,141.22 271.97,141.48 272.55,141.81 273.13,142.28 273.71,142.82 274.29,143.43 274.87,144.16 275.45,144.96 276.03,145.82 276.61,146.79 277.19,147.83 277.77,148.93 278.35,150.11 278.93,151.37 279.51,152.67 280.09,154.05 280.67,155.49 281.25,156.97 281.82,158.51 282.40,160.10 282.98,161.73 283.56,163.41 284.14,165.12 284.72,166.87 285.30,168.65 285.88,170.46 286.46,172.30 287.04,174.15 287.62,176.03 288.20,177.92 288.78,179.83 289.36,181.74 289.94,183.67 290.52,185.59 291.10,187.52 291.68,189.45 292.26,191.38 292.84,193.30 293.42,195.22 294.00,197.13 294.58,199.02 295.16,200.90 295.74,202.77 296.32,204.62 296.90,206.46 297.48,208.28 298.06,210.08 298.64,211.86 299.22,213.62 299.80,215.35 300.38,217.06 300.96,218.76 301.54,220.42 302.12,222.07 302.70,223.69 303.28,225.29 303.86,226.86 304.44,228.41 305.02,229.93 305.59,231.43 306.17,232.91 306.75,234.36 307.33,235.79 307.91,237.20 308.49,238.59 309.07,239.96 309.65,241.30 310.23,242.63 310.81,243.93 311.39,245.21 311.97,246.48 312.55,247.73 313.13,248.96 313.71,250.17 314.29,251.37 314.87,252.55 315.45,253.72 316.03,254.87 316.61,256.01 317.19,257.13 317.77,258.24 318.35,259.34 318.93,260.43 319.51,261.50 320.09,262.57 320.67,263.62 321.25,264.66 321.83,265.70 322.41,266.72 322.99,267.73 323.57,268.74 324.15,269.74 324.73,270.72 325.31,271.70 325.89,272.68 326.47,273.64 327.05,274.59 327.63,275.54 328.21,276.48 328.78,277.41 329.36,278.33 329.94,279.25 330.52,280.15 331.10,281.05 331.68,281.94 332.26,282.82 332.84,283.69 333.42,284.56 334.00,285.41 334.58,286.25 335.16,287.09 335.74,287.91 336.32,288.72 336.90,289.52 337.48,290.31 338.06,291.09 338.64,291.86 339.22,292.62 339.80,293.36 340.38,294.09 340.96,294.81 341.54,295.51 342.12,296.21 342.70,296.88 343.28,297.55 343.86,298.20 344.44,298.83 345.02,299.45 345.60,300.06 346.18,300.65 346.76,301.22 347.34,301.79 347.92,302.33 348.50,302.87 349.08,303.39 349.66,303.89 350.24,304.39 350.82,304.87 351.40,305.33 351.98,305.79 352.55,306.23 353.13,306.66 353.71,307.08 354.29,307.49 354.87,307.89 355.45,308.28 356.03,308.67 356.61,309.05 357.19,309.42 357.77,309.79 358.35,310.15 358.93,310.51 359.51,310.87 360.09,311.23 360.67,311.58 361.25,311.94 361.83,312.30 362.41,312.67 362.99,313.04 363.57,313.41 364.15,313.79 364.73,314.18 365.31,314.58 365.89,314.98 366.47,315.40 367.05,315.83 367.63,316.27 368.21,316.72 368.79,317.19 369.37,317.67 369.95,318.17 370.53,318.68 371.11,319.21 371.69,319.76 372.27,320.32 372.85,320.90 373.43,321.49 374.01,322.10 374.59,322.74 375.17,323.39 375.74,324.05 376.32,324.73 376.90,325.43 377.48,326.14 378.06,326.87 378.64,327.62 379.22,328.38 379.80,329.15 380.38,329.94 380.96,330.74 381.54,331.55 382.12,332.37 382.70,333.20 383.28,334.04 383.86,334.89 384.44,335.74 385.02,336.60 385.60,337.46 386.18,338.33 386.76,339.20 387.34,340.07 387.92,340.94 388.50,341.80 389.08,342.67 389.66,343.53 390.24,344.39 390.82,345.24 391.40,346.08 391.98,346.92 392.56,347.74 393.14,348.56 393.72,349.37 394.30,350.16 394.88,350.94 395.46,351.71 396.04,352.46 396.62,353.20 397.20,353.93 397.78,354.64 398.36,355.33 398.93,356.01 399.51,356.66 400.09,357.30 400.67,357.93 401.25,358.53 401.83,359.11 402.41,359.68 402.99,360.23 403.57,360.76 404.15,361.27 404.73,361.77 405.31,362.24 405.89,362.70 406.47,363.14 407.05,363.56 407.63,363.96 408.21,364.35 408.79,364.71 409.37,365.07 409.95,365.40 410.53,365.72 411.11,366.03 411.69,366.32 412.27,366.59 412.85,366.85 413.43,367.10 414.01,367.33 414.59,367.55 415.17,367.76 415.75,367.96 416.33,368.14 416.91,368.32 417.49,368.48 418.07,368.63 418.65,368.78 419.23,368.91 419.81,369.04 420.39,369.15 420.97,369.26 421.55,369.36 422.13,369.46 422.70,369.55 423.28,369.63 423.86,369.71 424.44,369.78 425.02,369.84 425.60,369.90 426.18,369.96 426.76,370.01 427.34,370.06 427.92,370.10 428.50,370.14 429.08,370.18 429.66,370.21 430.24,370.25 430.82,370.27 431.40,370.30 ' style='stroke-width: 0.75; stroke: #DF536B;' />
+<polyline points='189.15,370.31 189.61,370.29 190.07,370.27 190.53,370.25 190.99,370.23 191.45,370.20 191.91,370.17 192.37,370.14 192.83,370.11 193.29,370.08 193.75,370.04 194.21,370.00 194.68,369.96 195.14,369.92 195.60,369.87 196.06,369.82 196.52,369.77 196.98,369.72 197.44,369.66 197.90,369.60 198.36,369.53 198.82,369.46 199.28,369.39 199.75,369.31 200.21,369.23 200.67,369.14 201.13,369.05 201.59,368.95 202.05,368.85 202.51,368.74 202.97,368.63 203.43,368.51 203.89,368.39 204.35,368.26 204.81,368.12 205.28,367.98 205.74,367.83 206.20,367.67 206.66,367.51 207.12,367.34 207.58,367.16 208.04,366.98 208.50,366.78 208.96,366.58 209.42,366.37 209.88,366.15 210.35,365.93 210.81,365.69 211.27,365.45 211.73,365.20 212.19,364.94 212.65,364.67 213.11,364.39 213.57,364.10 214.03,363.81 214.49,363.50 214.95,363.19 215.41,362.87 215.88,362.53 216.34,362.19 216.80,361.84 217.26,361.48 217.72,361.11 218.18,360.73 218.64,360.34 219.10,359.95 219.56,359.54 220.02,359.13 220.48,358.71 220.95,358.29 221.41,357.85 221.87,357.41 222.33,356.96 222.79,356.51 223.25,356.05 223.71,355.58 224.17,355.11 224.63,354.63 225.09,354.15 225.55,353.66 226.01,353.18 226.48,352.68 226.94,352.19 227.40,351.69 227.86,351.20 228.32,350.70 228.78,350.20 229.24,349.70 229.70,349.20 230.16,348.70 230.62,348.21 231.08,347.72 231.55,347.23 232.01,346.74 232.47,346.26 232.93,345.78 233.39,345.31 233.85,344.85 234.31,344.39 234.77,343.94 235.23,343.49 235.69,343.06 236.15,342.63 236.62,342.21 237.08,341.80 237.54,341.40 238.00,341.01 238.46,340.63 238.92,340.26 239.38,339.91 239.84,339.56 240.30,339.22 240.76,338.90 241.22,338.58 241.68,338.28 242.15,337.99 242.61,337.71 243.07,337.44 243.53,337.18 243.99,336.94 244.45,336.70 244.91,336.47 245.37,336.26 245.83,336.04 246.29,335.84 246.75,335.65 247.22,335.46 247.68,335.28 248.14,335.10 248.60,334.93 249.06,334.76 249.52,334.59 249.98,334.42 250.44,334.26 250.90,334.09 251.36,333.92 251.82,333.74 252.28,333.56 252.75,333.37 253.21,333.18 253.67,332.96 254.13,332.75 254.59,332.51 255.05,332.26 255.51,332.00 255.97,331.71 256.43,331.41 256.89,331.09 257.35,330.73 257.82,330.35 258.28,329.95 258.74,329.51 259.20,329.05 259.66,328.54 260.12,328.00 260.58,327.43 261.04,326.81 261.50,326.15 261.96,325.45 262.42,324.70 262.88,323.92 263.35,323.07 263.81,322.17 264.27,321.24 264.73,320.23 265.19,319.18 265.65,318.06 266.11,316.88 266.57,315.67 267.03,314.36 267.49,313.01 267.95,311.60 268.42,310.10 268.88,308.56 269.34,306.94 269.80,305.24 270.26,303.51 270.72,301.67 271.18,299.78 271.64,297.83 272.10,295.78 272.56,293.69 273.02,291.51 273.48,289.26 273.95,286.97 274.41,284.57 274.87,282.13 275.33,279.62 275.79,277.02 276.25,274.38 276.71,271.66 277.17,268.87 277.63,266.05 278.09,263.12 278.55,260.16 279.02,257.15 279.48,254.06 279.94,250.94 280.40,247.74 280.86,244.51 281.32,241.24 281.78,237.90 282.24,234.53 282.70,231.13 283.16,227.68 283.62,224.20 284.09,220.69 284.55,217.15 285.01,213.59 285.47,209.99 285.93,206.39 286.39,202.77 286.85,199.14 287.31,195.50 287.77,191.85 288.23,188.20 288.69,184.56 289.15,180.92 289.62,177.29 290.08,173.67 290.54,170.07 291.00,166.48 291.46,162.93 291.92,159.40 292.38,155.89 292.84,152.43 293.30,149.00 293.76,145.61 294.22,142.27 294.69,138.96 295.15,135.73 295.61,132.53 296.07,129.39 296.53,126.32 296.99,123.29 297.45,120.35 297.91,117.47 298.37,114.64 298.83,111.93 299.29,109.26 299.75,106.67 300.22,104.17 300.68,101.73 301.14,99.40 301.60,97.15 302.06,94.96 302.52,92.91 302.98,90.91 303.44,89.01 303.90,87.21 304.36,85.48 304.82,83.88 305.29,82.35 305.75,80.90 306.21,79.60 306.67,78.35 307.13,77.21 307.59,76.18 308.05,75.21 308.51,74.38 308.97,73.62 309.43,72.95 309.89,72.41 310.35,71.93 310.82,71.56 311.28,71.30 311.74,71.09 312.20,71.02 312.66,71.01 313.12,71.09 313.58,71.29 314.04,71.54 314.50,71.90 314.96,72.34 315.42,72.84 315.89,73.47 316.35,74.15 316.81,74.91 317.27,75.77 317.73,76.67 318.19,77.67 318.65,78.74 319.11,79.86 319.57,81.08 320.03,82.35 320.49,83.68 320.95,85.10 321.42,86.55 321.88,88.08 322.34,89.66 322.80,91.28 323.26,92.99 323.72,94.72 324.18,96.52 324.64,98.36 325.10,100.24 325.56,102.18 326.02,104.15 326.49,106.16 326.95,108.22 327.41,110.30 327.87,112.42 328.33,114.58 328.79,116.76 329.25,118.98 329.71,121.22 330.17,123.49 330.63,125.78 331.09,128.09 331.55,130.42 332.02,132.77 332.48,135.14 332.94,137.52 333.40,139.91 333.86,142.32 334.32,144.73 334.78,147.15 335.24,149.58 335.70,152.01 336.16,154.45 336.62,156.89 337.09,159.33 337.55,161.76 338.01,164.20 338.47,166.63 338.93,169.05 339.39,171.47 339.85,173.89 340.31,176.29 340.77,178.68 341.23,181.06 341.69,183.43 342.16,185.79 342.62,188.13 343.08,190.46 343.54,192.77 344.00,195.06 344.46,197.34 344.92,199.60 345.38,201.84 345.84,204.06 346.30,206.26 346.76,208.44 347.22,210.60 347.69,212.73 348.15,214.85 348.61,216.94 349.07,219.01 349.53,221.06 349.99,223.08 350.45,225.08 350.91,227.06 351.37,229.01 351.83,230.94 352.29,232.85 352.76,234.73 353.22,236.60 353.68,238.43 354.14,240.25 354.60,242.05 355.06,243.82 355.52,245.57 355.98,247.30 356.44,249.00 356.90,250.70 357.36,252.36 357.82,254.01 358.29,255.64 358.75,257.25 359.21,258.85 359.67,260.42 360.13,261.98 360.59,263.53 361.05,265.05 361.51,266.56 361.97,268.06 362.43,269.54 362.89,271.01 363.36,272.47 363.82,273.91 364.28,275.35 364.74,276.77 365.20,278.18 365.66,279.59 366.12,280.98 366.58,282.36 367.04,283.74 367.50,285.11 367.96,286.47 368.42,287.82 368.89,289.16 369.35,290.50 369.81,291.83 370.27,293.16 370.73,294.48 371.19,295.79 371.65,297.10 372.11,298.41 372.57,299.70 373.03,301.00 373.49,302.28 373.96,303.57 374.42,304.84 374.88,306.12 375.34,307.38 375.80,308.64 376.26,309.90 376.72,311.15 377.18,312.39 377.64,313.63 378.10,314.86 378.56,316.09 379.02,317.30 379.49,318.51 379.95,319.71 380.41,320.90 380.87,322.09 381.33,323.27 381.79,324.43 382.25,325.59 382.71,326.73 383.17,327.86 383.63,328.99 384.09,330.10 384.56,331.20 385.02,332.29 385.48,333.36 385.94,334.43 386.40,335.47 386.86,336.51 387.32,337.53 387.78,338.53 388.24,339.52 388.70,340.50 389.16,341.45 389.63,342.39 390.09,343.32 390.55,344.23 391.01,345.12 391.47,345.99 391.93,346.85 392.39,347.69 392.85,348.51 393.31,349.31 393.77,350.10 394.23,350.86 394.69,351.62 395.16,352.34 395.62,353.05 396.08,353.75 396.54,354.42 397.00,355.08 397.46,355.72 397.92,356.33 398.38,356.94 398.84,357.52 399.30,358.09 399.76,358.64 400.23,359.17 400.69,359.68 401.15,360.18 401.61,360.66 402.07,361.12 402.53,361.57 402.99,362.00 403.45,362.41 403.91,362.81 404.37,363.20 404.83,363.56 405.29,363.92 405.76,364.26 406.22,364.59 406.68,364.90 407.14,365.20 407.60,365.49 408.06,365.76 408.52,366.02 408.98,366.27 409.44,366.52 409.90,366.74 410.36,366.96 410.83,367.17 411.29,367.36 411.75,367.55 412.21,367.73 412.67,367.90 413.13,368.06 413.59,368.21 414.05,368.36 414.51,368.49 414.97,368.62 415.43,368.75 415.89,368.86 416.36,368.97 416.82,369.08 417.28,369.17 417.74,369.26 418.20,369.35 418.66,369.43 419.12,369.51 419.58,369.58 420.04,369.65 420.50,369.71 420.96,369.77 421.43,369.83 421.89,369.88 422.35,369.93 422.81,369.97 423.27,370.01 423.73,370.05 424.19,370.09 424.65,370.13 ' style='stroke-width: 0.75; stroke: #61D04F;' />
+<polyline points='182.40,370.36 182.94,370.35 183.48,370.33 184.02,370.31 184.56,370.28 185.10,370.26 185.64,370.23 186.18,370.20 186.72,370.17 187.26,370.14 187.80,370.10 188.34,370.07 188.88,370.03 189.42,369.98 189.96,369.93 190.50,369.89 191.04,369.83 191.58,369.77 192.12,369.71 192.66,369.65 193.20,369.58 193.74,369.50 194.28,369.42 194.82,369.34 195.36,369.25 195.90,369.16 196.44,369.06 196.98,368.95 197.52,368.84 198.06,368.72 198.60,368.60 199.14,368.46 199.68,368.32 200.22,368.18 200.76,368.02 201.30,367.86 201.84,367.69 202.38,367.51 202.92,367.33 203.46,367.13 204.00,366.93 204.54,366.71 205.08,366.49 205.62,366.25 206.16,366.01 206.70,365.76 207.24,365.49 207.78,365.22 208.32,364.93 208.86,364.63 209.40,364.33 209.94,364.00 210.48,363.67 211.02,363.33 211.56,362.97 212.10,362.60 212.64,362.22 213.18,361.83 213.72,361.42 214.26,361.00 214.80,360.57 215.34,360.12 215.88,359.66 216.42,359.19 216.96,358.70 217.50,358.20 218.04,357.68 218.58,357.15 219.12,356.61 219.66,356.05 220.20,355.47 220.74,354.89 221.28,354.28 221.82,353.66 222.36,353.03 222.90,352.37 223.44,351.71 223.99,351.02 224.53,350.32 225.07,349.60 225.61,348.87 226.15,348.11 226.69,347.34 227.23,346.56 227.77,345.75 228.31,344.92 228.85,344.07 229.39,343.21 229.93,342.32 230.47,341.41 231.01,340.48 231.55,339.53 232.09,338.56 232.63,337.56 233.17,336.55 233.71,335.50 234.25,334.43 234.79,333.34 235.33,332.22 235.87,331.08 236.41,329.91 236.95,328.71 237.49,327.48 238.03,326.24 238.57,324.95 239.11,323.63 239.65,322.30 240.19,320.92 240.73,319.52 241.27,318.09 241.81,316.62 242.35,315.13 242.89,313.60 243.43,312.04 243.97,310.45 244.51,308.83 245.05,307.16 245.59,305.48 246.13,303.76 246.67,302.00 247.21,300.21 247.75,298.40 248.29,296.55 248.83,294.67 249.37,292.76 249.91,290.82 250.45,288.85 250.99,286.85 251.53,284.82 252.07,282.78 252.61,280.70 253.15,278.59 253.69,276.47 254.23,274.33 254.77,272.16 255.31,269.97 255.85,267.77 256.39,265.54 256.93,263.31 257.47,261.06 258.01,258.80 258.55,256.54 259.09,254.26 259.63,251.99 260.17,249.70 260.71,247.42 261.25,245.14 261.79,242.86 262.33,240.59 262.87,238.33 263.41,236.08 263.95,233.84 264.49,231.62 265.03,229.41 265.57,227.23 266.11,225.07 266.66,222.92 267.20,220.82 267.74,218.74 268.28,216.69 268.82,214.68 269.36,212.71 269.90,210.77 270.44,208.88 270.98,207.03 271.52,205.22 272.06,203.48 272.60,201.77 273.14,200.11 273.68,198.52 274.22,196.97 274.76,195.49 275.30,194.07 275.84,192.70 276.38,191.40 276.92,190.17 277.46,188.98 278.00,187.88 278.54,186.85 279.08,185.86 279.62,184.97 280.16,184.14 280.70,183.36 281.24,182.68 281.78,182.06 282.32,181.50 282.86,181.03 283.40,180.63 283.94,180.27 284.48,180.02 285.02,179.83 285.56,179.68 286.10,179.64 286.64,179.65 287.18,179.71 287.72,179.86 288.26,180.06 288.80,180.32 289.34,180.66 289.88,181.04 290.42,181.48 290.96,181.99 291.50,182.53 292.04,183.13 292.58,183.79 293.12,184.49 293.66,185.22 294.20,186.01 294.74,186.83 295.28,187.68 295.82,188.58 296.36,189.49 296.90,190.44 297.44,191.41 297.98,192.40 298.52,193.41 299.06,194.44 299.60,195.47 300.14,196.52 300.68,197.57 301.22,198.62 301.76,199.68 302.30,200.73 302.84,201.77 303.38,202.81 303.92,203.83 304.46,204.85 305.00,205.84 305.54,206.81 306.08,207.77 306.62,208.70 307.16,209.61 307.70,210.49 308.24,211.33 308.78,212.15 309.33,212.95 309.87,213.69 310.41,214.41 310.95,215.10 311.49,215.73 312.03,216.34 312.57,216.92 313.11,217.44 313.65,217.94 314.19,218.40 314.73,218.81 315.27,219.20 315.81,219.55 316.35,219.85 316.89,220.13 317.43,220.38 317.97,220.58 318.51,220.76 319.05,220.91 319.59,221.03 320.13,221.13 320.67,221.20 321.21,221.25 321.75,221.28 322.29,221.29 322.83,221.28 323.37,221.26 323.91,221.23 324.45,221.19 324.99,221.15 325.53,221.10 326.07,221.05 326.61,221.00 327.15,220.95 327.69,220.91 328.23,220.87 328.77,220.85 329.31,220.83 329.85,220.83 330.39,220.85 330.93,220.88 331.47,220.93 332.01,221.01 332.55,221.10 333.09,221.21 333.63,221.37 334.17,221.54 334.71,221.73 335.25,221.97 335.79,222.22 336.33,222.51 336.87,222.84 337.41,223.18 337.95,223.56 338.49,223.99 339.03,224.43 339.57,224.91 340.11,225.43 340.65,225.97 341.19,226.54 341.73,227.15 342.27,227.78 342.81,228.45 343.35,229.15 343.89,229.87 344.43,230.62 344.97,231.40 345.51,232.20 346.05,233.03 346.59,233.88 347.13,234.75 347.67,235.64 348.21,236.55 348.75,237.48 349.29,238.43 349.83,239.39 350.37,240.36 350.91,241.35 351.45,242.34 352.00,243.34 352.54,244.36 353.08,245.38 353.62,246.40 354.16,247.43 354.70,248.46 355.24,249.49 355.78,250.52 356.32,251.55 356.86,252.57 357.40,253.60 357.94,254.61 358.48,255.62 359.02,256.62 359.56,257.62 360.10,258.60 360.64,259.57 361.18,260.54 361.72,261.49 362.26,262.42 362.80,263.35 363.34,264.26 363.88,265.16 364.42,266.04 364.96,266.91 365.50,267.75 366.04,268.59 366.58,269.41 367.12,270.21 367.66,271.00 368.20,271.77 368.74,272.52 369.28,273.26 369.82,273.98 370.36,274.68 370.90,275.37 371.44,276.04 371.98,276.70 372.52,277.35 373.06,277.98 373.60,278.60 374.14,279.21 374.68,279.80 375.22,280.38 375.76,280.96 376.30,281.52 376.84,282.07 377.38,282.62 377.92,283.15 378.46,283.69 379.00,284.21 379.54,284.74 380.08,285.26 380.62,285.77 381.16,286.29 381.70,286.80 382.24,287.32 382.78,287.83 383.32,288.35 383.86,288.88 384.40,289.40 384.94,289.93 385.48,290.47 386.02,291.02 386.56,291.57 387.10,292.13 387.64,292.71 388.18,293.29 388.72,293.88 389.26,294.49 389.80,295.10 390.34,295.74 390.88,296.38 391.42,297.04 391.96,297.71 392.50,298.40 393.04,299.10 393.58,299.82 394.12,300.56 394.67,301.31 395.21,302.08 395.75,302.86 396.29,303.65 396.83,304.47 397.37,305.31 397.91,306.15 398.45,307.02 398.99,307.89 399.53,308.78 400.07,309.69 400.61,310.62 401.15,311.55 401.69,312.50 402.23,313.46 402.77,314.43 403.31,315.42 403.85,316.41 404.39,317.42 404.93,318.43 405.47,319.45 406.01,320.48 406.55,321.52 407.09,322.56 407.63,323.60 408.17,324.65 408.71,325.70 409.25,326.75 409.79,327.81 410.33,328.86 410.87,329.91 411.41,330.96 411.95,332.01 412.49,333.05 413.03,334.08 413.57,335.11 414.11,336.14 414.65,337.15 415.19,338.16 415.73,339.16 416.27,340.14 416.81,341.12 417.35,342.08 417.89,343.03 418.43,343.97 418.97,344.89 419.51,345.80 420.05,346.69 420.59,347.57 421.13,348.42 421.67,349.27 422.21,350.09 422.75,350.90 423.29,351.69 423.83,352.46 424.37,353.21 424.91,353.95 425.45,354.65 425.99,355.35 426.53,356.03 427.07,356.68 427.61,357.31 428.15,357.93 428.69,358.52 429.23,359.10 429.77,359.66 430.31,360.20 430.85,360.72 431.39,361.22 431.93,361.70 432.47,362.16 433.01,362.61 433.55,363.03 434.09,363.44 434.63,363.84 435.17,364.21 435.71,364.57 436.25,364.92 436.79,365.24 437.34,365.56 437.88,365.86 438.42,366.14 438.96,366.41 439.50,366.67 440.04,366.91 440.58,367.15 441.12,367.36 441.66,367.57 442.20,367.77 442.74,367.95 443.28,368.13 443.82,368.29 444.36,368.45 444.90,368.59 445.44,368.73 445.98,368.86 446.52,368.98 447.06,369.10 447.60,369.20 448.14,369.30 448.68,369.40 449.22,369.49 449.76,369.57 450.30,369.64 450.84,369.71 451.38,369.78 451.92,369.84 452.46,369.90 453.00,369.95 453.54,370.00 454.08,370.05 454.62,370.09 455.16,370.13 455.70,370.16 456.24,370.20 456.78,370.23 457.32,370.26 457.86,370.28 458.40,370.31 ' style='stroke-width: 0.75; stroke: #2297E6;' />
+<polyline points='121.65,370.30 122.25,370.28 122.86,370.25 123.47,370.21 124.07,370.18 124.68,370.14 125.28,370.10 125.89,370.05 126.50,370.00 127.10,369.95 127.71,369.89 128.32,369.82 128.92,369.75 129.53,369.68 130.13,369.59 130.74,369.51 131.35,369.41 131.95,369.31 132.56,369.20 133.17,369.08 133.77,368.95 134.38,368.81 134.98,368.67 135.59,368.51 136.20,368.34 136.80,368.16 137.41,367.97 138.01,367.77 138.62,367.56 139.23,367.33 139.83,367.09 140.44,366.83 141.05,366.56 141.65,366.27 142.26,365.98 142.86,365.66 143.47,365.32 144.08,364.97 144.68,364.60 145.29,364.21 145.89,363.81 146.50,363.39 147.11,362.95 147.71,362.49 148.32,362.01 148.93,361.51 149.53,360.99 150.14,360.45 150.74,359.89 151.35,359.32 151.96,358.72 152.56,358.10 153.17,357.46 153.78,356.81 154.38,356.13 154.99,355.44 155.59,354.73 156.20,354.00 156.81,353.25 157.41,352.49 158.02,351.70 158.62,350.90 159.23,350.09 159.84,349.26 160.44,348.41 161.05,347.55 161.66,346.68 162.26,345.80 162.87,344.90 163.47,343.99 164.08,343.07 164.69,342.14 165.29,341.20 165.90,340.25 166.50,339.30 167.11,338.33 167.72,337.36 168.32,336.38 168.93,335.40 169.54,334.41 170.14,333.41 170.75,332.41 171.35,331.40 171.96,330.39 172.57,329.38 173.17,328.36 173.78,327.33 174.38,326.31 174.99,325.27 175.60,324.24 176.20,323.19 176.81,322.15 177.42,321.09 178.02,320.03 178.63,318.97 179.23,317.90 179.84,316.82 180.45,315.74 181.05,314.64 181.66,313.54 182.27,312.42 182.87,311.30 183.48,310.17 184.08,309.02 184.69,307.87 185.30,306.70 185.90,305.52 186.51,304.33 187.11,303.12 187.72,301.89 188.33,300.66 188.93,299.41 189.54,298.14 190.15,296.86 190.75,295.57 191.36,294.26 191.96,292.94 192.57,291.60 193.18,290.24 193.78,288.88 194.39,287.51 194.99,286.12 195.60,284.72 196.21,283.31 196.81,281.89 197.42,280.47 198.03,279.04 198.63,277.60 199.24,276.16 199.84,274.72 200.45,273.28 201.06,271.84 201.66,270.40 202.27,268.97 202.87,267.55 203.48,266.13 204.09,264.73 204.69,263.34 205.30,261.96 205.91,260.60 206.51,259.27 207.12,257.95 207.72,256.65 208.33,255.38 208.94,254.14 209.54,252.92 210.15,251.74 210.76,250.59 211.36,249.46 211.97,248.38 212.57,247.33 213.18,246.31 213.79,245.34 214.39,244.41 215.00,243.50 215.60,242.65 216.21,241.84 216.82,241.06 217.42,240.33 218.03,239.64 218.64,238.98 219.24,238.36 219.85,237.79 220.45,237.25 221.06,236.75 221.67,236.29 222.27,235.85 222.88,235.45 223.48,235.09 224.09,234.75 224.70,234.44 225.30,234.16 225.91,233.90 226.52,233.65 227.12,233.43 227.73,233.22 228.33,233.03 228.94,232.84 229.55,232.66 230.15,232.49 230.76,232.32 231.36,232.15 231.97,231.97 232.58,231.79 233.18,231.59 233.79,231.39 234.40,231.17 235.00,230.94 235.61,230.68 236.21,230.41 236.82,230.11 237.43,229.78 238.03,229.44 238.64,229.05 239.25,228.64 239.85,228.21 240.46,227.73 241.06,227.23 241.67,226.70 242.28,226.13 242.88,225.52 243.49,224.90 244.09,224.23 244.70,223.53 245.31,222.81 245.91,222.06 246.52,221.28 247.13,220.48 247.73,219.66 248.34,218.81 248.94,217.94 249.55,217.07 250.16,216.18 250.76,215.28 251.37,214.37 251.97,213.46 252.58,212.56 253.19,211.65 253.79,210.75 254.40,209.87 255.01,209.00 255.61,208.15 256.22,207.32 256.82,206.52 257.43,205.74 258.04,205.00 258.64,204.30 259.25,203.62 259.85,203.01 260.46,202.43 261.07,201.89 261.67,201.42 262.28,201.00 262.89,200.62 263.49,200.31 264.10,200.06 264.70,199.86 265.31,199.73 265.92,199.67 266.52,199.66 267.13,199.71 267.74,199.85 268.34,200.04 268.95,200.28 269.55,200.62 270.16,201.00 270.77,201.44 271.37,201.97 271.98,202.54 272.58,203.17 273.19,203.87 273.80,204.62 274.40,205.42 275.01,206.29 275.62,207.20 276.22,208.16 276.83,209.17 277.43,210.23 278.04,211.32 278.65,212.46 279.25,213.64 279.86,214.85 280.46,216.10 281.07,217.38 281.68,218.69 282.28,220.02 282.89,221.39 283.50,222.78 284.10,224.18 284.71,225.61 285.31,227.05 285.92,228.51 286.53,229.98 287.13,231.47 287.74,232.97 288.34,234.48 288.95,235.99 289.56,237.51 290.16,239.04 290.77,240.58 291.38,242.12 291.98,243.66 292.59,245.21 293.19,246.76 293.80,248.31 294.41,249.86 295.01,251.41 295.62,252.96 296.23,254.52 296.83,256.07 297.44,257.62 298.04,259.17 298.65,260.71 299.26,262.26 299.86,263.80 300.47,265.34 301.07,266.88 301.68,268.41 302.29,269.94 302.89,271.46 303.50,272.99 304.11,274.50 304.71,276.01 305.32,277.51 305.92,279.00 306.53,280.49 307.14,281.97 307.74,283.44 308.35,284.90 308.95,286.35 309.56,287.79 310.17,289.21 310.77,290.63 311.38,292.03 311.99,293.41 312.59,294.78 313.20,296.13 313.80,297.46 314.41,298.78 315.02,300.08 315.62,301.36 316.23,302.61 316.83,303.85 317.44,305.06 318.05,306.25 318.65,307.42 319.26,308.55 319.87,309.66 320.47,310.75 321.08,311.81 321.68,312.84 322.29,313.85 322.90,314.82 323.50,315.76 324.11,316.67 324.72,317.56 325.32,318.40 325.93,319.22 326.53,320.01 327.14,320.75 327.75,321.47 328.35,322.16 328.96,322.80 329.56,323.42 330.17,324.00 330.78,324.54 331.38,325.05 331.99,325.53 332.60,325.96 333.20,326.35 333.81,326.72 334.41,327.04 335.02,327.32 335.63,327.58 336.23,327.79 336.84,327.96 337.44,328.09 338.05,328.20 338.66,328.25 339.26,328.27 339.87,328.26 340.48,328.20 341.08,328.11 341.69,327.99 342.29,327.82 342.90,327.61 343.51,327.38 344.11,327.10 344.72,326.79 345.32,326.45 345.93,326.07 346.54,325.66 347.14,325.22 347.75,324.75 348.36,324.24 348.96,323.71 349.57,323.16 350.17,322.57 350.78,321.97 351.39,321.34 351.99,320.69 352.60,320.02 353.21,319.35 353.81,318.65 354.42,317.94 355.02,317.22 355.63,316.50 356.24,315.77 356.84,315.04 357.45,314.31 358.05,313.58 358.66,312.86 359.27,312.15 359.87,311.45 360.48,310.77 361.09,310.10 361.69,309.45 362.30,308.83 362.90,308.23 363.51,307.66 364.12,307.13 364.72,306.61 365.33,306.15 365.93,305.73 366.54,305.33 367.15,304.99 367.75,304.70 368.36,304.44 368.97,304.24 369.57,304.09 370.18,303.99 370.78,303.94 371.39,303.95 372.00,304.01 372.60,304.13 373.21,304.31 373.81,304.55 374.42,304.83 375.03,305.19 375.63,305.59 376.24,306.04 376.85,306.57 377.45,307.14 378.06,307.76 378.66,308.44 379.27,309.18 379.88,309.95 380.48,310.78 381.09,311.66 381.70,312.57 382.30,313.53 382.91,314.53 383.51,315.56 384.12,316.63 384.73,317.74 385.33,318.87 385.94,320.02 386.54,321.21 387.15,322.41 387.76,323.63 388.36,324.87 388.97,326.12 389.58,327.38 390.18,328.65 390.79,329.92 391.39,331.20 392.00,332.47 392.61,333.74 393.21,335.01 393.82,336.27 394.42,337.52 395.03,338.75 395.64,339.98 396.24,341.18 396.85,342.37 397.46,343.54 398.06,344.69 398.67,345.81 399.27,346.92 399.88,347.99 400.49,349.04 401.09,350.07 401.70,351.06 402.30,352.03 402.91,352.97 403.52,353.88 404.12,354.75 404.73,355.60 405.34,356.42 405.94,357.20 406.55,357.96 407.15,358.69 407.76,359.39 408.37,360.05 408.97,360.70 409.58,361.30 410.19,361.88 410.79,362.44 411.40,362.96 412.00,363.46 412.61,363.94 413.22,364.39 413.82,364.81 414.43,365.21 415.03,365.59 415.64,365.95 416.25,366.28 416.85,366.60 417.46,366.89 418.07,367.17 418.67,367.44 419.28,367.68 419.88,367.90 420.49,368.12 421.10,368.31 421.70,368.50 422.31,368.67 422.91,368.83 423.52,368.97 424.13,369.11 424.73,369.23 425.34,369.35 425.95,369.46 426.55,369.56 427.16,369.65 427.76,369.73 428.37,369.81 428.98,369.88 429.58,369.94 430.19,370.00 430.79,370.05 431.40,370.10 ' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg='>
+    <rect x='0.00' y='0.00' width='504.00' height='455.78' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg=)'>
+<text x='266.40' y='34.47' text-anchor='middle' style='font-size: 14.40px; font-weight: bold; font-family: "Liberation Sans";' textLength='171.81px' lengthAdjust='spacingAndGlyphs'>density.default(x = Temp)</text>
+<text x='266.40' y='437.06' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='237.51px' lengthAdjust='spacingAndGlyphs'>N = [31, 30, 31, ...]   Joint Bandwidth = 2.649</text>
+<text transform='translate(12.96,220.69) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='40.02px' lengthAdjust='spacingAndGlyphs'>Density</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_false.svg b/inst/tinytest/_tinysnapshot/legend_false.svg
new file mode 100644
index 00000000..116eaecc
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_false.svg
@@ -0,0 +1,214 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<line x1='61.60' y1='430.56' x2='445.60' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='61.60' y1='430.56' x2='61.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='125.60' y1='430.56' x2='125.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='189.60' y1='430.56' x2='189.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='253.60' y1='430.56' x2='253.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='317.60' y1='430.56' x2='317.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='381.60' y1='430.56' x2='381.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='445.60' y1='430.56' x2='445.60' y2='437.76' style='stroke-width: 0.75;' />
+<text x='61.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='125.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='189.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='253.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='317.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='381.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='445.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='383.24' x2='59.04' y2='131.53' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='383.24' x2='51.84' y2='383.24' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='299.34' x2='51.84' y2='299.34' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='215.43' x2='51.84' y2='215.43' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='131.53' x2='51.84' y2='131.53' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,383.24) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,299.34) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,215.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,131.53) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,430.56 473.76,430.56 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDQzMC41Ng=='>
+    <rect x='59.04' y='59.04' width='414.72' height='371.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDQzMC41Ng==)'>
+<circle cx='74.40' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='87.20' cy='282.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='100.00' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='112.80' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='125.60' cy='416.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='151.20' cy='341.29' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='164.00' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='176.80' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='189.60' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='202.40' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='215.20' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='228.00' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='240.80' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='253.60' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.40' cy='349.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='279.20' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='292.00' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='304.80' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.60' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='330.40' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='343.20' cy='274.17' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='356.00' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='368.80' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='381.60' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.40' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='407.20' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.00' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='432.80' cy='207.04' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='445.60' cy='223.82' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='458.40' cy='249.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='74.40' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='87.20' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='100.00' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='112.80' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='125.60' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='138.40' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='151.20' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='164.00' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='176.80' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='189.60' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='215.20' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='228.00' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='240.80' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='253.60' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='279.20' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='292.00' cy='341.29' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='304.80' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.60' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='343.20' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='356.00' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='368.80' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='381.60' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.40' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='407.20' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.00' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='432.80' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='445.60' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='74.40' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='87.20' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='100.00' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='112.80' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='125.60' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='138.40' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='151.20' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='164.00' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='176.80' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='189.60' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='202.40' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='215.20' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='228.00' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='240.80' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='253.60' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.40' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='279.20' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='292.00' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='304.80' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.60' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='343.20' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='356.00' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='368.80' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='381.60' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.40' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='407.20' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.00' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='432.80' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='445.60' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='458.40' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='74.40' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='87.20' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='100.00' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='112.80' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='125.60' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='138.40' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='151.20' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='164.00' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='176.80' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='189.60' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='202.40' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='215.20' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='228.00' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='240.80' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='253.60' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.40' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='279.20' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='292.00' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='304.80' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.60' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='330.40' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='343.20' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='356.00' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='368.80' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='381.60' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.40' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='407.20' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.00' cy='72.80' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='432.80' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='445.60' cy='81.19' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='458.40' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='74.40' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='87.20' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='100.00' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='112.80' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='125.60' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='138.40' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='151.20' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='164.00' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='176.80' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='189.60' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='202.40' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='215.20' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='228.00' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='240.80' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='253.60' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.40' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='279.20' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='292.00' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='304.80' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.60' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='330.40' cy='349.68' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='343.20' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='356.00' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='368.80' cy='307.73' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='381.60' cy='358.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.40' cy='299.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='407.20' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.00' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='432.80' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='445.60' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<text x='266.40' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_formula_legend.svg b/inst/tinytest/_tinysnapshot/legend_formula_legend.svg
new file mode 100644
index 00000000..335baea0
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_formula_legend.svg
@@ -0,0 +1,231 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<rect x='193.01' y='453.66' width='146.77' height='44.89' style='stroke-width: 0.75; fill: #FFFFFF;' />
+<circle cx='203.81' cy='483.59' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='232.09' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='260.36' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='288.64' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='316.91' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='266.40' y='468.62' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='93.40px' lengthAdjust='spacingAndGlyphs'>Month of the year</text>
+<text x='214.61' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='242.89' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='271.16' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='299.44' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='327.71' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.60' y1='382.34' x2='445.60' y2='382.34' style='stroke-width: 0.75;' />
+<line x1='61.60' y1='382.34' x2='61.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='125.60' y1='382.34' x2='125.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='189.60' y1='382.34' x2='189.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='253.60' y1='382.34' x2='253.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='317.60' y1='382.34' x2='317.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='381.60' y1='382.34' x2='381.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='445.60' y1='382.34' x2='445.60' y2='389.54' style='stroke-width: 0.75;' />
+<text x='61.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='125.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='189.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='253.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='317.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='381.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='445.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='341.16' x2='59.04' y2='122.12' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='341.16' x2='51.84' y2='341.16' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='268.15' x2='51.84' y2='268.15' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='195.13' x2='51.84' y2='195.13' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='122.12' x2='51.84' y2='122.12' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,341.16) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,268.15) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,195.13) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,122.12) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,382.34 473.76,382.34 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA=='>
+    <rect x='59.04' y='59.04' width='414.72' height='323.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA==)'>
+<circle cx='74.40' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='87.20' cy='253.54' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='100.00' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='112.80' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='125.60' cy='370.36' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='151.20' cy='304.65' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='164.00' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='176.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='189.60' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='202.40' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='215.20' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='228.00' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='240.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='253.60' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.40' cy='311.95' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='279.20' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='292.00' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.60' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='330.40' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='343.20' cy='246.24' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='356.00' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='368.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='381.60' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.40' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='407.20' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.00' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='432.80' cy='187.83' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='445.60' cy='202.44' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='458.40' cy='224.34' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='74.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='87.20' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='100.00' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='138.40' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='151.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='164.00' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='189.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='215.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='279.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='292.00' cy='304.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='304.80' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.60' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='343.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='356.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='368.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='381.60' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='407.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.00' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='432.80' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='74.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='87.20' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='100.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='125.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='138.40' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='151.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='164.00' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='176.80' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='189.60' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='202.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='215.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='228.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='240.80' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='253.60' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='279.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='292.00' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='304.80' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='343.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='356.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='368.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='381.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='407.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.00' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='432.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='458.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='74.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='87.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='100.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='112.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='138.40' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='151.20' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='164.00' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='189.60' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='202.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='215.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='279.20' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='304.80' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.60' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='343.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='356.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='368.80' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='381.60' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='407.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.00' cy='71.01' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='432.80' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='445.60' cy='78.32' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='458.40' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='74.40' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='87.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='100.00' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='112.80' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='125.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='138.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='151.20' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='164.00' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='176.80' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='189.60' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='202.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='215.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='228.00' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='240.80' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='253.60' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='279.20' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.60' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='330.40' cy='311.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='343.20' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='356.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='368.80' cy='275.45' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='381.60' cy='319.25' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.40' cy='268.15' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='407.20' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='432.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='445.60' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg='>
+    <rect x='0.00' y='0.00' width='504.00' height='455.78' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg=)'>
+<text x='266.40' y='437.06' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,220.69) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_bottom_.svg b/inst/tinytest/_tinysnapshot/legend_keyword_bottom_.svg
new file mode 100644
index 00000000..63f5cb80
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_bottom_.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='203.81' cy='483.59' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='232.09' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='260.36' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='288.64' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='316.91' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='266.40' y='468.62' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='214.61' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='242.89' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='271.16' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='299.44' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='327.71' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.60' y1='382.34' x2='445.60' y2='382.34' style='stroke-width: 0.75;' />
+<line x1='61.60' y1='382.34' x2='61.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='125.60' y1='382.34' x2='125.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='189.60' y1='382.34' x2='189.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='253.60' y1='382.34' x2='253.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='317.60' y1='382.34' x2='317.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='381.60' y1='382.34' x2='381.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='445.60' y1='382.34' x2='445.60' y2='389.54' style='stroke-width: 0.75;' />
+<text x='61.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='125.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='189.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='253.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='317.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='381.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='445.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='341.16' x2='59.04' y2='122.12' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='341.16' x2='51.84' y2='341.16' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='268.15' x2='51.84' y2='268.15' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='195.13' x2='51.84' y2='195.13' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='122.12' x2='51.84' y2='122.12' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,341.16) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,268.15) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,195.13) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,122.12) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,382.34 473.76,382.34 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA=='>
+    <rect x='59.04' y='59.04' width='414.72' height='323.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA==)'>
+<circle cx='74.40' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='87.20' cy='253.54' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='100.00' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='112.80' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='125.60' cy='370.36' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='151.20' cy='304.65' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='164.00' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='176.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='189.60' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='202.40' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='215.20' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='228.00' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='240.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='253.60' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.40' cy='311.95' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='279.20' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='292.00' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.60' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='330.40' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='343.20' cy='246.24' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='356.00' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='368.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='381.60' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.40' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='407.20' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.00' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='432.80' cy='187.83' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='445.60' cy='202.44' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='458.40' cy='224.34' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='74.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='87.20' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='100.00' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='138.40' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='151.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='164.00' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='189.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='215.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='279.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='292.00' cy='304.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='304.80' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.60' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='343.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='356.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='368.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='381.60' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='407.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.00' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='432.80' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='74.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='87.20' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='100.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='125.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='138.40' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='151.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='164.00' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='176.80' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='189.60' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='202.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='215.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='228.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='240.80' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='253.60' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='279.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='292.00' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='304.80' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='343.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='356.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='368.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='381.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='407.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.00' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='432.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='458.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='74.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='87.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='100.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='112.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='138.40' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='151.20' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='164.00' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='189.60' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='202.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='215.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='279.20' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='304.80' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.60' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='343.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='356.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='368.80' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='381.60' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='407.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.00' cy='71.01' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='432.80' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='445.60' cy='78.32' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='458.40' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='74.40' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='87.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='100.00' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='112.80' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='125.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='138.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='151.20' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='164.00' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='176.80' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='189.60' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='202.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='215.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='228.00' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='240.80' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='253.60' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='279.20' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.60' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='330.40' cy='311.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='343.20' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='356.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='368.80' cy='275.45' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='381.60' cy='319.25' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.40' cy='268.15' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='407.20' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='432.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='445.60' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg='>
+    <rect x='0.00' y='0.00' width='504.00' height='455.78' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg=)'>
+<text x='266.40' y='437.06' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,220.69) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_bottomleft_.svg b/inst/tinytest/_tinysnapshot/legend_keyword_bottomleft_.svg
new file mode 100644
index 00000000..d94adf90
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_bottomleft_.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='49.27' cy='358.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='49.27' cy='372.96' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='49.27' cy='387.36' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='49.27' cy='401.76' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='49.27' cy='416.16' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='55.43' y='344.16' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='60.54' y='362.69' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='60.54' y='377.09' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='60.54' y='391.49' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='60.54' y='405.89' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='60.54' y='420.29' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='143.05' y1='430.56' x2='451.17' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='143.05' y1='430.56' x2='143.05' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='194.40' y1='430.56' x2='194.40' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='245.76' y1='430.56' x2='245.76' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='297.11' y1='430.56' x2='297.11' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='348.46' y1='430.56' x2='348.46' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='399.81' y1='430.56' x2='399.81' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='451.17' y1='430.56' x2='451.17' y2='437.76' style='stroke-width: 0.75;' />
+<text x='143.05' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='194.40' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='245.76' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='297.11' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='348.46' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='399.81' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='451.17' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='141.00' y1='383.24' x2='141.00' y2='131.53' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='383.24' x2='133.80' y2='383.24' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='299.34' x2='133.80' y2='299.34' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='215.43' x2='133.80' y2='215.43' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='131.53' x2='133.80' y2='131.53' style='stroke-width: 0.75;' />
+<text transform='translate(123.72,383.24) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(123.72,299.34) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(123.72,215.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(123.72,131.53) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='141.00,430.56 473.76,430.56 473.76,59.04 141.00,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpMTQxLjAwfDQ3My43Nnw1OS4wNHw0MzAuNTY='>
+    <rect x='141.00' y='59.04' width='332.76' height='371.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTQxLjAwfDQ3My43Nnw1OS4wNHw0MzAuNTY=)'>
+<circle cx='153.32' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='163.59' cy='282.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='173.86' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='184.13' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='194.40' cy='416.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='204.67' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='214.94' cy='341.29' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='225.22' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='235.49' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='245.76' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='256.03' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.30' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='276.57' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='286.84' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='297.11' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='307.38' cy='349.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.65' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='327.92' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='338.19' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='348.46' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='358.73' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='369.00' cy='274.17' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='379.27' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='389.54' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='399.81' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='410.08' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.35' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='430.62' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='440.89' cy='207.04' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='451.17' cy='223.82' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='461.44' cy='249.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='153.32' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='163.59' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='173.86' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='184.13' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='194.40' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='204.67' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='214.94' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='225.22' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='235.49' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='245.76' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='256.03' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.30' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='276.57' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='286.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='297.11' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='307.38' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.65' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='327.92' cy='341.29' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='338.19' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='348.46' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='358.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='369.00' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='379.27' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='389.54' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='399.81' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='410.08' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.35' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='430.62' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='440.89' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='451.17' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='153.32' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='163.59' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='173.86' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='184.13' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='194.40' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='204.67' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='214.94' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='225.22' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='235.49' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='245.76' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='256.03' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.30' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='276.57' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='286.84' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='297.11' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='307.38' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.65' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='327.92' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='338.19' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='348.46' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='358.73' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='369.00' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='379.27' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='389.54' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='399.81' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='410.08' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.35' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='430.62' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='440.89' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='451.17' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='461.44' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='153.32' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='163.59' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='173.86' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='184.13' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='194.40' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='204.67' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='214.94' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='225.22' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='235.49' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='245.76' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='256.03' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.30' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='276.57' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='286.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='297.11' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='307.38' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.65' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='327.92' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='338.19' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='348.46' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='358.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='369.00' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='379.27' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='389.54' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='399.81' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='410.08' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.35' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='430.62' cy='72.80' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='440.89' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='451.17' cy='81.19' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='461.44' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='153.32' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='163.59' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='173.86' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='184.13' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='194.40' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='204.67' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='214.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='225.22' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='235.49' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='245.76' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='256.03' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.30' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='276.57' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='286.84' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='297.11' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='307.38' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.65' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='327.92' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='338.19' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='348.46' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='358.73' cy='349.68' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='369.00' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='379.27' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='389.54' cy='307.73' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='399.81' cy='358.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='410.08' cy='299.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.35' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='430.62' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='440.89' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='451.17' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpODEuOTZ8NTA0LjAwfDAuMDB8NTA0LjAw'>
+    <rect x='81.96' y='0.00' width='422.04' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpODEuOTZ8NTA0LjAwfDAuMDB8NTA0LjAw)'>
+<text x='307.38' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(94.92,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_default.svg b/inst/tinytest/_tinysnapshot/legend_keyword_default.svg
new file mode 100644
index 00000000..63f5cb80
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_default.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='203.81' cy='483.59' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='232.09' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='260.36' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='288.64' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='316.91' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='266.40' y='468.62' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='214.61' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='242.89' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='271.16' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='299.44' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='327.71' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.60' y1='382.34' x2='445.60' y2='382.34' style='stroke-width: 0.75;' />
+<line x1='61.60' y1='382.34' x2='61.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='125.60' y1='382.34' x2='125.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='189.60' y1='382.34' x2='189.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='253.60' y1='382.34' x2='253.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='317.60' y1='382.34' x2='317.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='381.60' y1='382.34' x2='381.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='445.60' y1='382.34' x2='445.60' y2='389.54' style='stroke-width: 0.75;' />
+<text x='61.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='125.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='189.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='253.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='317.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='381.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='445.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='341.16' x2='59.04' y2='122.12' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='341.16' x2='51.84' y2='341.16' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='268.15' x2='51.84' y2='268.15' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='195.13' x2='51.84' y2='195.13' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='122.12' x2='51.84' y2='122.12' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,341.16) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,268.15) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,195.13) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,122.12) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,382.34 473.76,382.34 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA=='>
+    <rect x='59.04' y='59.04' width='414.72' height='323.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA==)'>
+<circle cx='74.40' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='87.20' cy='253.54' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='100.00' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='112.80' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='125.60' cy='370.36' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='151.20' cy='304.65' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='164.00' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='176.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='189.60' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='202.40' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='215.20' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='228.00' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='240.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='253.60' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.40' cy='311.95' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='279.20' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='292.00' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.60' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='330.40' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='343.20' cy='246.24' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='356.00' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='368.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='381.60' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.40' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='407.20' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.00' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='432.80' cy='187.83' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='445.60' cy='202.44' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='458.40' cy='224.34' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='74.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='87.20' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='100.00' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='138.40' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='151.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='164.00' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='189.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='215.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='279.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='292.00' cy='304.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='304.80' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.60' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='343.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='356.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='368.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='381.60' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='407.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.00' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='432.80' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='74.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='87.20' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='100.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='125.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='138.40' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='151.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='164.00' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='176.80' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='189.60' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='202.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='215.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='228.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='240.80' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='253.60' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='279.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='292.00' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='304.80' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='343.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='356.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='368.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='381.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='407.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.00' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='432.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='458.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='74.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='87.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='100.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='112.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='138.40' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='151.20' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='164.00' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='189.60' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='202.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='215.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='279.20' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='304.80' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.60' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='343.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='356.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='368.80' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='381.60' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='407.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.00' cy='71.01' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='432.80' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='445.60' cy='78.32' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='458.40' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='74.40' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='87.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='100.00' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='112.80' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='125.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='138.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='151.20' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='164.00' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='176.80' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='189.60' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='202.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='215.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='228.00' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='240.80' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='253.60' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='279.20' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.60' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='330.40' cy='311.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='343.20' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='356.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='368.80' cy='275.45' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='381.60' cy='319.25' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.40' cy='268.15' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='407.20' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='432.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='445.60' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg='>
+    <rect x='0.00' y='0.00' width='504.00' height='455.78' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg=)'>
+<text x='266.40' y='437.06' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,220.69) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_density.svg b/inst/tinytest/_tinysnapshot/legend_keyword_density.svg
new file mode 100644
index 00000000..30869181
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_density.svg
@@ -0,0 +1,83 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<line x1='149.81' y1='483.59' x2='171.41' y2='483.59' style='stroke-width: 0.75;' />
+<line x1='199.69' y1='483.59' x2='221.29' y2='483.59' style='stroke-width: 0.75; stroke: #DF536B;' />
+<line x1='249.56' y1='483.59' x2='271.16' y2='483.59' style='stroke-width: 0.75; stroke: #61D04F;' />
+<line x1='299.44' y1='483.59' x2='321.04' y2='483.59' style='stroke-width: 0.75; stroke: #2297E6;' />
+<line x1='349.31' y1='483.59' x2='370.91' y2='483.59' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='266.40' y='468.62' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='182.21' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='232.09' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='281.96' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='331.84' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='381.71' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='87.53' y1='382.34' x2='425.02' y2='382.34' style='stroke-width: 0.75;' />
+<line x1='87.53' y1='382.34' x2='87.53' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='155.03' y1='382.34' x2='155.03' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='222.53' y1='382.34' x2='222.53' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='290.02' y1='382.34' x2='290.02' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='357.52' y1='382.34' x2='357.52' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='425.02' y1='382.34' x2='425.02' y2='389.54' style='stroke-width: 0.75;' />
+<text x='87.53' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>50</text>
+<text x='155.03' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text x='222.53' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text x='290.02' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text x='357.52' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<text x='425.02' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>100</text>
+<line x1='59.04' y1='370.55' x2='59.04' y2='103.43' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='370.55' x2='51.84' y2='370.55' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='303.77' x2='51.84' y2='303.77' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='236.99' x2='51.84' y2='236.99' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='170.21' x2='51.84' y2='170.21' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='103.43' x2='51.84' y2='103.43' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,370.55) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='23.36px' lengthAdjust='spacingAndGlyphs'>0.00</text>
+<text transform='translate(41.76,303.77) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='23.36px' lengthAdjust='spacingAndGlyphs'>0.02</text>
+<text transform='translate(41.76,236.99) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='23.36px' lengthAdjust='spacingAndGlyphs'>0.04</text>
+<text transform='translate(41.76,170.21) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='23.36px' lengthAdjust='spacingAndGlyphs'>0.06</text>
+<text transform='translate(41.76,103.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='23.36px' lengthAdjust='spacingAndGlyphs'>0.08</text>
+<polygon points='59.04,382.34 473.76,382.34 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA=='>
+    <rect x='59.04' y='59.04' width='414.72' height='323.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA==)'>
+<polyline points='74.40,370.17 74.94,370.13 75.48,370.08 76.02,370.04 76.56,369.99 77.10,369.93 77.64,369.87 78.18,369.81 78.72,369.74 79.26,369.66 79.80,369.58 80.34,369.48 80.88,369.39 81.42,369.28 81.96,369.17 82.50,369.05 83.04,368.91 83.58,368.77 84.12,368.62 84.66,368.45 85.20,368.27 85.74,368.08 86.28,367.88 86.82,367.66 87.36,367.43 87.90,367.17 88.44,366.90 88.98,366.62 89.52,366.31 90.06,365.99 90.60,365.65 91.14,365.27 91.68,364.89 92.22,364.48 92.76,364.03 93.30,363.57 93.84,363.08 94.38,362.55 94.92,362.01 95.46,361.43 96.01,360.82 96.55,360.18 97.09,359.50 97.63,358.78 98.17,358.04 98.71,357.26 99.25,356.43 99.79,355.58 100.33,354.67 100.87,353.73 101.41,352.75 101.95,351.73 102.49,350.65 103.03,349.55 103.57,348.39 104.11,347.18 104.65,345.95 105.19,344.65 105.73,343.30 106.27,341.93 106.81,340.49 107.35,339.00 107.89,337.48 108.43,335.90 108.97,334.27 109.51,332.62 110.05,330.89 110.59,329.13 111.13,327.33 111.67,325.47 112.21,323.57 112.75,321.64 113.29,319.65 113.83,317.63 114.37,315.58 114.91,313.47 115.45,311.34 115.99,309.17 116.53,306.96 117.07,304.73 117.61,302.47 118.15,300.18 118.69,297.86 119.23,295.53 119.77,293.17 120.31,290.79 120.85,288.40 121.39,286.00 121.93,283.59 122.47,281.17 123.01,278.74 123.55,276.31 124.09,273.89 124.63,271.47 125.17,269.05 125.71,266.65 126.25,264.25 126.79,261.87 127.33,259.51 127.87,257.18 128.41,254.86 128.95,252.57 129.49,250.31 130.03,248.08 130.57,245.89 131.11,243.73 131.65,241.61 132.19,239.54 132.73,237.51 133.27,235.51 133.81,233.58 134.35,231.69 134.89,229.84 135.43,228.06 135.97,226.33 136.51,224.64 137.05,223.04 137.59,221.47 138.13,219.96 138.68,218.53 139.22,217.14 139.76,215.82 140.30,214.57 140.84,213.37 141.38,212.23 141.92,211.17 142.46,210.15 143.00,209.20 143.54,208.32 144.08,207.48 144.62,206.72 145.16,206.02 145.70,205.36 146.24,204.78 146.78,204.25 147.32,203.76 147.86,203.35 148.40,202.98 148.94,202.66 149.48,202.40 150.02,202.18 150.56,202.00 151.10,201.89 151.64,201.81 152.18,201.76 152.72,201.77 153.26,201.82 153.80,201.89 154.34,202.01 154.88,202.15 155.42,202.32 155.96,202.53 156.50,202.76 157.04,203.01 157.58,203.30 158.12,203.60 158.66,203.91 159.20,204.25 159.74,204.59 160.28,204.95 160.82,205.32 161.36,205.69 161.90,206.08 162.44,206.46 162.98,206.85 163.52,207.23 164.06,207.62 164.60,207.99 165.14,208.37 165.68,208.73 166.22,209.08 166.76,209.42 167.30,209.75 167.84,210.07 168.38,210.36 168.92,210.64 169.46,210.90 170.00,211.13 170.54,211.35 171.08,211.54 171.62,211.71 172.16,211.85 172.70,211.97 173.24,212.05 173.78,212.11 174.32,212.15 174.86,212.15 175.40,212.13 175.94,212.08 176.48,212.00 177.02,211.89 177.56,211.76 178.10,211.59 178.64,211.40 179.18,211.19 179.72,210.94 180.26,210.67 180.80,210.38 181.35,210.06 181.89,209.73 182.43,209.38 182.97,209.01 183.51,208.62 184.05,208.22 184.59,207.81 185.13,207.38 185.67,206.95 186.21,206.52 186.75,206.08 187.29,205.64 187.83,205.20 188.37,204.76 188.91,204.34 189.45,203.92 189.99,203.51 190.53,203.12 191.07,202.74 191.61,202.38 192.15,202.05 192.69,201.74 193.23,201.46 193.77,201.21 194.31,200.99 194.85,200.79 195.39,200.65 195.93,200.54 196.47,200.46 197.01,200.43 197.55,200.45 198.09,200.50 198.63,200.61 199.17,200.77 199.71,200.96 200.25,201.22 200.79,201.53 201.33,201.87 201.87,202.30 202.41,202.76 202.95,203.26 203.49,203.84 204.03,204.46 204.57,205.12 205.11,205.86 205.65,206.63 206.19,207.45 206.73,208.33 207.27,209.25 207.81,210.21 208.35,211.23 208.89,212.29 209.43,213.38 209.97,214.52 210.51,215.69 211.05,216.90 211.59,218.15 212.13,219.41 212.67,220.71 213.21,222.04 213.75,223.39 214.29,224.76 214.83,226.14 215.37,227.54 215.91,228.96 216.45,230.38 216.99,231.81 217.53,233.24 218.07,234.68 218.61,236.11 219.15,237.54 219.69,238.97 220.23,240.39 220.77,241.79 221.31,243.19 221.85,244.57 222.39,245.93 222.93,247.27 223.47,248.60 224.02,249.89 224.56,251.17 225.10,252.43 225.64,253.65 226.18,254.85 226.72,256.02 227.26,257.16 227.80,258.27 228.34,259.36 228.88,260.41 229.42,261.43 229.96,262.43 230.50,263.38 231.04,264.31 231.58,265.22 232.12,266.09 232.66,266.93 233.20,267.75 233.74,268.54 234.28,269.30 234.82,270.04 235.36,270.75 235.90,271.45 236.44,272.12 236.98,272.77 237.52,273.40 238.06,274.02 238.60,274.62 239.14,275.21 239.68,275.78 240.22,276.35 240.76,276.90 241.30,277.45 241.84,277.99 242.38,278.53 242.92,279.06 243.46,279.59 244.00,280.12 244.54,280.65 245.08,281.19 245.62,281.72 246.16,282.26 246.70,282.81 247.24,283.36 247.78,283.92 248.32,284.49 248.86,285.07 249.40,285.65 249.94,286.25 250.48,286.85 251.02,287.47 251.56,288.09 252.10,288.73 252.64,289.38 253.18,290.04 253.72,290.71 254.26,291.39 254.80,292.08 255.34,292.77 255.88,293.48 256.42,294.20 256.96,294.92 257.50,295.66 258.04,296.39 258.58,297.14 259.12,297.89 259.66,298.64 260.20,299.40 260.74,300.16 261.28,300.93 261.82,301.69 262.36,302.45 262.90,303.22 263.44,303.98 263.98,304.74 264.52,305.49 265.06,306.24 265.60,306.99 266.14,307.73 266.69,308.46 267.23,309.19 267.77,309.91 268.31,310.62 268.85,311.32 269.39,312.02 269.93,312.70 270.47,313.37 271.01,314.03 271.55,314.68 272.09,315.32 272.63,315.95 273.17,316.56 273.71,317.17 274.25,317.76 274.79,318.35 275.33,318.92 275.87,319.48 276.41,320.03 276.95,320.57 277.49,321.10 278.03,321.62 278.57,322.14 279.11,322.64 279.65,323.13 280.19,323.62 280.73,324.10 281.27,324.58 281.81,325.05 282.35,325.51 282.89,325.97 283.43,326.43 283.97,326.88 284.51,327.33 285.05,327.78 285.59,328.23 286.13,328.68 286.67,329.13 287.21,329.58 287.75,330.03 288.29,330.48 288.83,330.93 289.37,331.39 289.91,331.85 290.45,332.32 290.99,332.79 291.53,333.26 292.07,333.74 292.61,334.23 293.15,334.72 293.69,335.22 294.23,335.72 294.77,336.23 295.31,336.74 295.85,337.26 296.39,337.79 296.93,338.32 297.47,338.86 298.01,339.40 298.55,339.96 299.09,340.51 299.63,341.07 300.17,341.64 300.71,342.21 301.25,342.78 301.79,343.36 302.33,343.94 302.87,344.52 303.41,345.11 303.95,345.70 304.49,346.29 305.03,346.88 305.57,347.47 306.11,348.06 306.65,348.65 307.19,349.23 307.73,349.82 308.27,350.40 308.81,350.98 309.36,351.56 309.90,352.13 310.44,352.70 310.98,353.26 311.52,353.82 312.06,354.37 312.60,354.91 313.14,355.45 313.68,355.98 314.22,356.49 314.76,357.01 315.30,357.51 315.84,358.00 316.38,358.49 316.92,358.96 317.46,359.42 318.00,359.88 318.54,360.32 319.08,360.75 319.62,361.17 320.16,361.58 320.70,361.98 321.24,362.37 321.78,362.75 322.32,363.11 322.86,363.46 323.40,363.81 323.94,364.14 324.48,364.46 325.02,364.76 325.56,365.06 326.10,365.35 326.64,365.62 327.18,365.89 327.72,366.14 328.26,366.38 328.80,366.62 329.34,366.84 329.88,367.05 330.42,367.26 330.96,367.45 331.50,367.64 332.04,367.81 332.58,367.98 333.12,368.14 333.66,368.29 334.20,368.44 334.74,368.57 335.28,368.70 335.82,368.83 336.36,368.94 336.90,369.05 337.44,369.15 337.98,369.25 338.52,369.34 339.06,369.43 339.60,369.51 340.14,369.58 340.68,369.65 341.22,369.72 341.76,369.78 342.30,369.84 342.84,369.89 343.38,369.94 343.92,369.99 344.46,370.03 345.00,370.08 345.54,370.11 346.08,370.15 346.62,370.18 347.16,370.21 347.70,370.24 348.24,370.27 348.78,370.29 349.32,370.31 349.86,370.33 350.40,370.35 ' style='stroke-width: 0.75;' />
+<polyline points='135.15,370.35 135.73,370.33 136.31,370.30 136.89,370.28 137.47,370.25 138.05,370.22 138.63,370.19 139.21,370.15 139.79,370.11 140.37,370.07 140.94,370.03 141.52,369.98 142.10,369.93 142.68,369.87 143.26,369.81 143.84,369.75 144.42,369.68 145.00,369.61 145.58,369.53 146.16,369.44 146.74,369.35 147.32,369.25 147.90,369.15 148.48,369.03 149.06,368.92 149.64,368.79 150.22,368.66 150.80,368.51 151.38,368.36 151.96,368.20 152.54,368.03 153.12,367.86 153.70,367.67 154.28,367.47 154.86,367.26 155.44,367.04 156.02,366.81 156.60,366.57 157.18,366.32 157.76,366.05 158.34,365.78 158.92,365.49 159.50,365.18 160.08,364.87 160.66,364.54 161.24,364.20 161.82,363.85 162.40,363.49 162.98,363.11 163.56,362.72 164.14,362.31 164.71,361.90 165.29,361.47 165.87,361.03 166.45,360.57 167.03,360.11 167.61,359.63 168.19,359.14 168.77,358.64 169.35,358.14 169.93,357.62 170.51,357.09 171.09,356.55 171.67,356.01 172.25,355.45 172.83,354.90 173.41,354.33 173.99,353.76 174.57,353.19 175.15,352.61 175.73,352.03 176.31,351.45 176.89,350.86 177.47,350.28 178.05,349.70 178.63,349.12 179.21,348.54 179.79,347.96 180.37,347.39 180.95,346.83 181.53,346.28 182.11,345.73 182.69,345.19 183.27,344.66 183.85,344.14 184.43,343.63 185.01,343.13 185.59,342.64 186.17,342.17 186.75,341.72 187.33,341.27 187.90,340.85 188.48,340.43 189.06,340.04 189.64,339.66 190.22,339.29 190.80,338.95 191.38,338.62 191.96,338.30 192.54,338.00 193.12,337.72 193.70,337.46 194.28,337.20 194.86,336.97 195.44,336.74 196.02,336.53 196.60,336.34 197.18,336.15 197.76,335.97 198.34,335.81 198.92,335.65 199.50,335.49 200.08,335.35 200.66,335.20 201.24,335.06 201.82,334.91 202.40,334.77 202.98,334.62 203.56,334.47 204.14,334.30 204.72,334.13 205.30,333.95 205.88,333.75 206.46,333.54 207.04,333.31 207.62,333.05 208.20,332.78 208.78,332.48 209.36,332.15 209.94,331.80 210.52,331.42 211.10,330.99 211.67,330.54 212.25,330.05 212.83,329.51 213.41,328.93 213.99,328.32 214.57,327.65 215.15,326.94 215.73,326.18 216.31,325.36 216.89,324.50 217.47,323.59 218.05,322.61 218.63,321.58 219.21,320.51 219.79,319.35 220.37,318.15 220.95,316.91 221.53,315.57 222.11,314.19 222.69,312.76 223.27,311.24 223.85,309.68 224.43,308.06 225.01,306.37 225.59,304.62 226.17,302.82 226.75,300.94 227.33,299.01 227.91,297.04 228.49,294.99 229.07,292.88 229.65,290.74 230.23,288.52 230.81,286.26 231.39,283.95 231.97,281.58 232.55,279.17 233.13,276.71 233.71,274.21 234.29,271.66 234.86,269.07 235.44,266.45 236.02,263.78 236.60,261.09 237.18,258.36 237.76,255.59 238.34,252.80 238.92,249.99 239.50,247.15 240.08,244.30 240.66,241.43 241.24,238.53 241.82,235.63 242.40,232.73 242.98,229.81 243.56,226.89 244.14,223.97 244.72,221.05 245.30,218.14 245.88,215.24 246.46,212.35 247.04,209.48 247.62,206.61 248.20,203.78 248.78,200.97 249.36,198.18 249.94,195.44 250.52,192.72 251.10,190.03 251.68,187.40 252.26,184.81 252.84,182.25 253.42,179.76 254.00,177.32 254.58,174.92 255.16,172.60 255.74,170.34 256.32,168.13 256.90,166.01 257.48,163.96 258.06,161.97 258.63,160.06 259.21,158.24 259.79,156.49 260.37,154.82 260.95,153.26 261.53,151.77 262.11,150.37 262.69,149.08 263.27,147.86 263.85,146.73 264.43,145.73 265.01,144.81 265.59,143.97 266.17,143.26 266.75,142.64 267.33,142.09 267.91,141.69 268.49,141.36 269.07,141.12 269.65,141.01 270.23,140.98 270.81,141.03 271.39,141.22 271.97,141.48 272.55,141.81 273.13,142.28 273.71,142.82 274.29,143.43 274.87,144.16 275.45,144.96 276.03,145.82 276.61,146.79 277.19,147.83 277.77,148.93 278.35,150.11 278.93,151.37 279.51,152.67 280.09,154.05 280.67,155.49 281.25,156.97 281.82,158.51 282.40,160.10 282.98,161.73 283.56,163.41 284.14,165.12 284.72,166.87 285.30,168.65 285.88,170.46 286.46,172.30 287.04,174.15 287.62,176.03 288.20,177.92 288.78,179.83 289.36,181.74 289.94,183.67 290.52,185.59 291.10,187.52 291.68,189.45 292.26,191.38 292.84,193.30 293.42,195.22 294.00,197.13 294.58,199.02 295.16,200.90 295.74,202.77 296.32,204.62 296.90,206.46 297.48,208.28 298.06,210.08 298.64,211.86 299.22,213.62 299.80,215.35 300.38,217.06 300.96,218.76 301.54,220.42 302.12,222.07 302.70,223.69 303.28,225.29 303.86,226.86 304.44,228.41 305.02,229.93 305.59,231.43 306.17,232.91 306.75,234.36 307.33,235.79 307.91,237.20 308.49,238.59 309.07,239.96 309.65,241.30 310.23,242.63 310.81,243.93 311.39,245.21 311.97,246.48 312.55,247.73 313.13,248.96 313.71,250.17 314.29,251.37 314.87,252.55 315.45,253.72 316.03,254.87 316.61,256.01 317.19,257.13 317.77,258.24 318.35,259.34 318.93,260.43 319.51,261.50 320.09,262.57 320.67,263.62 321.25,264.66 321.83,265.70 322.41,266.72 322.99,267.73 323.57,268.74 324.15,269.74 324.73,270.72 325.31,271.70 325.89,272.68 326.47,273.64 327.05,274.59 327.63,275.54 328.21,276.48 328.78,277.41 329.36,278.33 329.94,279.25 330.52,280.15 331.10,281.05 331.68,281.94 332.26,282.82 332.84,283.69 333.42,284.56 334.00,285.41 334.58,286.25 335.16,287.09 335.74,287.91 336.32,288.72 336.90,289.52 337.48,290.31 338.06,291.09 338.64,291.86 339.22,292.62 339.80,293.36 340.38,294.09 340.96,294.81 341.54,295.51 342.12,296.21 342.70,296.88 343.28,297.55 343.86,298.20 344.44,298.83 345.02,299.45 345.60,300.06 346.18,300.65 346.76,301.22 347.34,301.79 347.92,302.33 348.50,302.87 349.08,303.39 349.66,303.89 350.24,304.39 350.82,304.87 351.40,305.33 351.98,305.79 352.55,306.23 353.13,306.66 353.71,307.08 354.29,307.49 354.87,307.89 355.45,308.28 356.03,308.67 356.61,309.05 357.19,309.42 357.77,309.79 358.35,310.15 358.93,310.51 359.51,310.87 360.09,311.23 360.67,311.58 361.25,311.94 361.83,312.30 362.41,312.67 362.99,313.04 363.57,313.41 364.15,313.79 364.73,314.18 365.31,314.58 365.89,314.98 366.47,315.40 367.05,315.83 367.63,316.27 368.21,316.72 368.79,317.19 369.37,317.67 369.95,318.17 370.53,318.68 371.11,319.21 371.69,319.76 372.27,320.32 372.85,320.90 373.43,321.49 374.01,322.10 374.59,322.74 375.17,323.39 375.74,324.05 376.32,324.73 376.90,325.43 377.48,326.14 378.06,326.87 378.64,327.62 379.22,328.38 379.80,329.15 380.38,329.94 380.96,330.74 381.54,331.55 382.12,332.37 382.70,333.20 383.28,334.04 383.86,334.89 384.44,335.74 385.02,336.60 385.60,337.46 386.18,338.33 386.76,339.20 387.34,340.07 387.92,340.94 388.50,341.80 389.08,342.67 389.66,343.53 390.24,344.39 390.82,345.24 391.40,346.08 391.98,346.92 392.56,347.74 393.14,348.56 393.72,349.37 394.30,350.16 394.88,350.94 395.46,351.71 396.04,352.46 396.62,353.20 397.20,353.93 397.78,354.64 398.36,355.33 398.93,356.01 399.51,356.66 400.09,357.30 400.67,357.93 401.25,358.53 401.83,359.11 402.41,359.68 402.99,360.23 403.57,360.76 404.15,361.27 404.73,361.77 405.31,362.24 405.89,362.70 406.47,363.14 407.05,363.56 407.63,363.96 408.21,364.35 408.79,364.71 409.37,365.07 409.95,365.40 410.53,365.72 411.11,366.03 411.69,366.32 412.27,366.59 412.85,366.85 413.43,367.10 414.01,367.33 414.59,367.55 415.17,367.76 415.75,367.96 416.33,368.14 416.91,368.32 417.49,368.48 418.07,368.63 418.65,368.78 419.23,368.91 419.81,369.04 420.39,369.15 420.97,369.26 421.55,369.36 422.13,369.46 422.70,369.55 423.28,369.63 423.86,369.71 424.44,369.78 425.02,369.84 425.60,369.90 426.18,369.96 426.76,370.01 427.34,370.06 427.92,370.10 428.50,370.14 429.08,370.18 429.66,370.21 430.24,370.25 430.82,370.27 431.40,370.30 ' style='stroke-width: 0.75; stroke: #DF536B;' />
+<polyline points='189.15,370.31 189.61,370.29 190.07,370.27 190.53,370.25 190.99,370.23 191.45,370.20 191.91,370.17 192.37,370.14 192.83,370.11 193.29,370.08 193.75,370.04 194.21,370.00 194.68,369.96 195.14,369.92 195.60,369.87 196.06,369.82 196.52,369.77 196.98,369.72 197.44,369.66 197.90,369.60 198.36,369.53 198.82,369.46 199.28,369.39 199.75,369.31 200.21,369.23 200.67,369.14 201.13,369.05 201.59,368.95 202.05,368.85 202.51,368.74 202.97,368.63 203.43,368.51 203.89,368.39 204.35,368.26 204.81,368.12 205.28,367.98 205.74,367.83 206.20,367.67 206.66,367.51 207.12,367.34 207.58,367.16 208.04,366.98 208.50,366.78 208.96,366.58 209.42,366.37 209.88,366.15 210.35,365.93 210.81,365.69 211.27,365.45 211.73,365.20 212.19,364.94 212.65,364.67 213.11,364.39 213.57,364.10 214.03,363.81 214.49,363.50 214.95,363.19 215.41,362.87 215.88,362.53 216.34,362.19 216.80,361.84 217.26,361.48 217.72,361.11 218.18,360.73 218.64,360.34 219.10,359.95 219.56,359.54 220.02,359.13 220.48,358.71 220.95,358.29 221.41,357.85 221.87,357.41 222.33,356.96 222.79,356.51 223.25,356.05 223.71,355.58 224.17,355.11 224.63,354.63 225.09,354.15 225.55,353.66 226.01,353.18 226.48,352.68 226.94,352.19 227.40,351.69 227.86,351.20 228.32,350.70 228.78,350.20 229.24,349.70 229.70,349.20 230.16,348.70 230.62,348.21 231.08,347.72 231.55,347.23 232.01,346.74 232.47,346.26 232.93,345.78 233.39,345.31 233.85,344.85 234.31,344.39 234.77,343.94 235.23,343.49 235.69,343.06 236.15,342.63 236.62,342.21 237.08,341.80 237.54,341.40 238.00,341.01 238.46,340.63 238.92,340.26 239.38,339.91 239.84,339.56 240.30,339.22 240.76,338.90 241.22,338.58 241.68,338.28 242.15,337.99 242.61,337.71 243.07,337.44 243.53,337.18 243.99,336.94 244.45,336.70 244.91,336.47 245.37,336.26 245.83,336.04 246.29,335.84 246.75,335.65 247.22,335.46 247.68,335.28 248.14,335.10 248.60,334.93 249.06,334.76 249.52,334.59 249.98,334.42 250.44,334.26 250.90,334.09 251.36,333.92 251.82,333.74 252.28,333.56 252.75,333.37 253.21,333.18 253.67,332.96 254.13,332.75 254.59,332.51 255.05,332.26 255.51,332.00 255.97,331.71 256.43,331.41 256.89,331.09 257.35,330.73 257.82,330.35 258.28,329.95 258.74,329.51 259.20,329.05 259.66,328.54 260.12,328.00 260.58,327.43 261.04,326.81 261.50,326.15 261.96,325.45 262.42,324.70 262.88,323.92 263.35,323.07 263.81,322.17 264.27,321.24 264.73,320.23 265.19,319.18 265.65,318.06 266.11,316.88 266.57,315.67 267.03,314.36 267.49,313.01 267.95,311.60 268.42,310.10 268.88,308.56 269.34,306.94 269.80,305.24 270.26,303.51 270.72,301.67 271.18,299.78 271.64,297.83 272.10,295.78 272.56,293.69 273.02,291.51 273.48,289.26 273.95,286.97 274.41,284.57 274.87,282.13 275.33,279.62 275.79,277.02 276.25,274.38 276.71,271.66 277.17,268.87 277.63,266.05 278.09,263.12 278.55,260.16 279.02,257.15 279.48,254.06 279.94,250.94 280.40,247.74 280.86,244.51 281.32,241.24 281.78,237.90 282.24,234.53 282.70,231.13 283.16,227.68 283.62,224.20 284.09,220.69 284.55,217.15 285.01,213.59 285.47,209.99 285.93,206.39 286.39,202.77 286.85,199.14 287.31,195.50 287.77,191.85 288.23,188.20 288.69,184.56 289.15,180.92 289.62,177.29 290.08,173.67 290.54,170.07 291.00,166.48 291.46,162.93 291.92,159.40 292.38,155.89 292.84,152.43 293.30,149.00 293.76,145.61 294.22,142.27 294.69,138.96 295.15,135.73 295.61,132.53 296.07,129.39 296.53,126.32 296.99,123.29 297.45,120.35 297.91,117.47 298.37,114.64 298.83,111.93 299.29,109.26 299.75,106.67 300.22,104.17 300.68,101.73 301.14,99.40 301.60,97.15 302.06,94.96 302.52,92.91 302.98,90.91 303.44,89.01 303.90,87.21 304.36,85.48 304.82,83.88 305.29,82.35 305.75,80.90 306.21,79.60 306.67,78.35 307.13,77.21 307.59,76.18 308.05,75.21 308.51,74.38 308.97,73.62 309.43,72.95 309.89,72.41 310.35,71.93 310.82,71.56 311.28,71.30 311.74,71.09 312.20,71.02 312.66,71.01 313.12,71.09 313.58,71.29 314.04,71.54 314.50,71.90 314.96,72.34 315.42,72.84 315.89,73.47 316.35,74.15 316.81,74.91 317.27,75.77 317.73,76.67 318.19,77.67 318.65,78.74 319.11,79.86 319.57,81.08 320.03,82.35 320.49,83.68 320.95,85.10 321.42,86.55 321.88,88.08 322.34,89.66 322.80,91.28 323.26,92.99 323.72,94.72 324.18,96.52 324.64,98.36 325.10,100.24 325.56,102.18 326.02,104.15 326.49,106.16 326.95,108.22 327.41,110.30 327.87,112.42 328.33,114.58 328.79,116.76 329.25,118.98 329.71,121.22 330.17,123.49 330.63,125.78 331.09,128.09 331.55,130.42 332.02,132.77 332.48,135.14 332.94,137.52 333.40,139.91 333.86,142.32 334.32,144.73 334.78,147.15 335.24,149.58 335.70,152.01 336.16,154.45 336.62,156.89 337.09,159.33 337.55,161.76 338.01,164.20 338.47,166.63 338.93,169.05 339.39,171.47 339.85,173.89 340.31,176.29 340.77,178.68 341.23,181.06 341.69,183.43 342.16,185.79 342.62,188.13 343.08,190.46 343.54,192.77 344.00,195.06 344.46,197.34 344.92,199.60 345.38,201.84 345.84,204.06 346.30,206.26 346.76,208.44 347.22,210.60 347.69,212.73 348.15,214.85 348.61,216.94 349.07,219.01 349.53,221.06 349.99,223.08 350.45,225.08 350.91,227.06 351.37,229.01 351.83,230.94 352.29,232.85 352.76,234.73 353.22,236.60 353.68,238.43 354.14,240.25 354.60,242.05 355.06,243.82 355.52,245.57 355.98,247.30 356.44,249.00 356.90,250.70 357.36,252.36 357.82,254.01 358.29,255.64 358.75,257.25 359.21,258.85 359.67,260.42 360.13,261.98 360.59,263.53 361.05,265.05 361.51,266.56 361.97,268.06 362.43,269.54 362.89,271.01 363.36,272.47 363.82,273.91 364.28,275.35 364.74,276.77 365.20,278.18 365.66,279.59 366.12,280.98 366.58,282.36 367.04,283.74 367.50,285.11 367.96,286.47 368.42,287.82 368.89,289.16 369.35,290.50 369.81,291.83 370.27,293.16 370.73,294.48 371.19,295.79 371.65,297.10 372.11,298.41 372.57,299.70 373.03,301.00 373.49,302.28 373.96,303.57 374.42,304.84 374.88,306.12 375.34,307.38 375.80,308.64 376.26,309.90 376.72,311.15 377.18,312.39 377.64,313.63 378.10,314.86 378.56,316.09 379.02,317.30 379.49,318.51 379.95,319.71 380.41,320.90 380.87,322.09 381.33,323.27 381.79,324.43 382.25,325.59 382.71,326.73 383.17,327.86 383.63,328.99 384.09,330.10 384.56,331.20 385.02,332.29 385.48,333.36 385.94,334.43 386.40,335.47 386.86,336.51 387.32,337.53 387.78,338.53 388.24,339.52 388.70,340.50 389.16,341.45 389.63,342.39 390.09,343.32 390.55,344.23 391.01,345.12 391.47,345.99 391.93,346.85 392.39,347.69 392.85,348.51 393.31,349.31 393.77,350.10 394.23,350.86 394.69,351.62 395.16,352.34 395.62,353.05 396.08,353.75 396.54,354.42 397.00,355.08 397.46,355.72 397.92,356.33 398.38,356.94 398.84,357.52 399.30,358.09 399.76,358.64 400.23,359.17 400.69,359.68 401.15,360.18 401.61,360.66 402.07,361.12 402.53,361.57 402.99,362.00 403.45,362.41 403.91,362.81 404.37,363.20 404.83,363.56 405.29,363.92 405.76,364.26 406.22,364.59 406.68,364.90 407.14,365.20 407.60,365.49 408.06,365.76 408.52,366.02 408.98,366.27 409.44,366.52 409.90,366.74 410.36,366.96 410.83,367.17 411.29,367.36 411.75,367.55 412.21,367.73 412.67,367.90 413.13,368.06 413.59,368.21 414.05,368.36 414.51,368.49 414.97,368.62 415.43,368.75 415.89,368.86 416.36,368.97 416.82,369.08 417.28,369.17 417.74,369.26 418.20,369.35 418.66,369.43 419.12,369.51 419.58,369.58 420.04,369.65 420.50,369.71 420.96,369.77 421.43,369.83 421.89,369.88 422.35,369.93 422.81,369.97 423.27,370.01 423.73,370.05 424.19,370.09 424.65,370.13 ' style='stroke-width: 0.75; stroke: #61D04F;' />
+<polyline points='182.40,370.36 182.94,370.35 183.48,370.33 184.02,370.31 184.56,370.28 185.10,370.26 185.64,370.23 186.18,370.20 186.72,370.17 187.26,370.14 187.80,370.10 188.34,370.07 188.88,370.03 189.42,369.98 189.96,369.93 190.50,369.89 191.04,369.83 191.58,369.77 192.12,369.71 192.66,369.65 193.20,369.58 193.74,369.50 194.28,369.42 194.82,369.34 195.36,369.25 195.90,369.16 196.44,369.06 196.98,368.95 197.52,368.84 198.06,368.72 198.60,368.60 199.14,368.46 199.68,368.32 200.22,368.18 200.76,368.02 201.30,367.86 201.84,367.69 202.38,367.51 202.92,367.33 203.46,367.13 204.00,366.93 204.54,366.71 205.08,366.49 205.62,366.25 206.16,366.01 206.70,365.76 207.24,365.49 207.78,365.22 208.32,364.93 208.86,364.63 209.40,364.33 209.94,364.00 210.48,363.67 211.02,363.33 211.56,362.97 212.10,362.60 212.64,362.22 213.18,361.83 213.72,361.42 214.26,361.00 214.80,360.57 215.34,360.12 215.88,359.66 216.42,359.19 216.96,358.70 217.50,358.20 218.04,357.68 218.58,357.15 219.12,356.61 219.66,356.05 220.20,355.47 220.74,354.89 221.28,354.28 221.82,353.66 222.36,353.03 222.90,352.37 223.44,351.71 223.99,351.02 224.53,350.32 225.07,349.60 225.61,348.87 226.15,348.11 226.69,347.34 227.23,346.56 227.77,345.75 228.31,344.92 228.85,344.07 229.39,343.21 229.93,342.32 230.47,341.41 231.01,340.48 231.55,339.53 232.09,338.56 232.63,337.56 233.17,336.55 233.71,335.50 234.25,334.43 234.79,333.34 235.33,332.22 235.87,331.08 236.41,329.91 236.95,328.71 237.49,327.48 238.03,326.24 238.57,324.95 239.11,323.63 239.65,322.30 240.19,320.92 240.73,319.52 241.27,318.09 241.81,316.62 242.35,315.13 242.89,313.60 243.43,312.04 243.97,310.45 244.51,308.83 245.05,307.16 245.59,305.48 246.13,303.76 246.67,302.00 247.21,300.21 247.75,298.40 248.29,296.55 248.83,294.67 249.37,292.76 249.91,290.82 250.45,288.85 250.99,286.85 251.53,284.82 252.07,282.78 252.61,280.70 253.15,278.59 253.69,276.47 254.23,274.33 254.77,272.16 255.31,269.97 255.85,267.77 256.39,265.54 256.93,263.31 257.47,261.06 258.01,258.80 258.55,256.54 259.09,254.26 259.63,251.99 260.17,249.70 260.71,247.42 261.25,245.14 261.79,242.86 262.33,240.59 262.87,238.33 263.41,236.08 263.95,233.84 264.49,231.62 265.03,229.41 265.57,227.23 266.11,225.07 266.66,222.92 267.20,220.82 267.74,218.74 268.28,216.69 268.82,214.68 269.36,212.71 269.90,210.77 270.44,208.88 270.98,207.03 271.52,205.22 272.06,203.48 272.60,201.77 273.14,200.11 273.68,198.52 274.22,196.97 274.76,195.49 275.30,194.07 275.84,192.70 276.38,191.40 276.92,190.17 277.46,188.98 278.00,187.88 278.54,186.85 279.08,185.86 279.62,184.97 280.16,184.14 280.70,183.36 281.24,182.68 281.78,182.06 282.32,181.50 282.86,181.03 283.40,180.63 283.94,180.27 284.48,180.02 285.02,179.83 285.56,179.68 286.10,179.64 286.64,179.65 287.18,179.71 287.72,179.86 288.26,180.06 288.80,180.32 289.34,180.66 289.88,181.04 290.42,181.48 290.96,181.99 291.50,182.53 292.04,183.13 292.58,183.79 293.12,184.49 293.66,185.22 294.20,186.01 294.74,186.83 295.28,187.68 295.82,188.58 296.36,189.49 296.90,190.44 297.44,191.41 297.98,192.40 298.52,193.41 299.06,194.44 299.60,195.47 300.14,196.52 300.68,197.57 301.22,198.62 301.76,199.68 302.30,200.73 302.84,201.77 303.38,202.81 303.92,203.83 304.46,204.85 305.00,205.84 305.54,206.81 306.08,207.77 306.62,208.70 307.16,209.61 307.70,210.49 308.24,211.33 308.78,212.15 309.33,212.95 309.87,213.69 310.41,214.41 310.95,215.10 311.49,215.73 312.03,216.34 312.57,216.92 313.11,217.44 313.65,217.94 314.19,218.40 314.73,218.81 315.27,219.20 315.81,219.55 316.35,219.85 316.89,220.13 317.43,220.38 317.97,220.58 318.51,220.76 319.05,220.91 319.59,221.03 320.13,221.13 320.67,221.20 321.21,221.25 321.75,221.28 322.29,221.29 322.83,221.28 323.37,221.26 323.91,221.23 324.45,221.19 324.99,221.15 325.53,221.10 326.07,221.05 326.61,221.00 327.15,220.95 327.69,220.91 328.23,220.87 328.77,220.85 329.31,220.83 329.85,220.83 330.39,220.85 330.93,220.88 331.47,220.93 332.01,221.01 332.55,221.10 333.09,221.21 333.63,221.37 334.17,221.54 334.71,221.73 335.25,221.97 335.79,222.22 336.33,222.51 336.87,222.84 337.41,223.18 337.95,223.56 338.49,223.99 339.03,224.43 339.57,224.91 340.11,225.43 340.65,225.97 341.19,226.54 341.73,227.15 342.27,227.78 342.81,228.45 343.35,229.15 343.89,229.87 344.43,230.62 344.97,231.40 345.51,232.20 346.05,233.03 346.59,233.88 347.13,234.75 347.67,235.64 348.21,236.55 348.75,237.48 349.29,238.43 349.83,239.39 350.37,240.36 350.91,241.35 351.45,242.34 352.00,243.34 352.54,244.36 353.08,245.38 353.62,246.40 354.16,247.43 354.70,248.46 355.24,249.49 355.78,250.52 356.32,251.55 356.86,252.57 357.40,253.60 357.94,254.61 358.48,255.62 359.02,256.62 359.56,257.62 360.10,258.60 360.64,259.57 361.18,260.54 361.72,261.49 362.26,262.42 362.80,263.35 363.34,264.26 363.88,265.16 364.42,266.04 364.96,266.91 365.50,267.75 366.04,268.59 366.58,269.41 367.12,270.21 367.66,271.00 368.20,271.77 368.74,272.52 369.28,273.26 369.82,273.98 370.36,274.68 370.90,275.37 371.44,276.04 371.98,276.70 372.52,277.35 373.06,277.98 373.60,278.60 374.14,279.21 374.68,279.80 375.22,280.38 375.76,280.96 376.30,281.52 376.84,282.07 377.38,282.62 377.92,283.15 378.46,283.69 379.00,284.21 379.54,284.74 380.08,285.26 380.62,285.77 381.16,286.29 381.70,286.80 382.24,287.32 382.78,287.83 383.32,288.35 383.86,288.88 384.40,289.40 384.94,289.93 385.48,290.47 386.02,291.02 386.56,291.57 387.10,292.13 387.64,292.71 388.18,293.29 388.72,293.88 389.26,294.49 389.80,295.10 390.34,295.74 390.88,296.38 391.42,297.04 391.96,297.71 392.50,298.40 393.04,299.10 393.58,299.82 394.12,300.56 394.67,301.31 395.21,302.08 395.75,302.86 396.29,303.65 396.83,304.47 397.37,305.31 397.91,306.15 398.45,307.02 398.99,307.89 399.53,308.78 400.07,309.69 400.61,310.62 401.15,311.55 401.69,312.50 402.23,313.46 402.77,314.43 403.31,315.42 403.85,316.41 404.39,317.42 404.93,318.43 405.47,319.45 406.01,320.48 406.55,321.52 407.09,322.56 407.63,323.60 408.17,324.65 408.71,325.70 409.25,326.75 409.79,327.81 410.33,328.86 410.87,329.91 411.41,330.96 411.95,332.01 412.49,333.05 413.03,334.08 413.57,335.11 414.11,336.14 414.65,337.15 415.19,338.16 415.73,339.16 416.27,340.14 416.81,341.12 417.35,342.08 417.89,343.03 418.43,343.97 418.97,344.89 419.51,345.80 420.05,346.69 420.59,347.57 421.13,348.42 421.67,349.27 422.21,350.09 422.75,350.90 423.29,351.69 423.83,352.46 424.37,353.21 424.91,353.95 425.45,354.65 425.99,355.35 426.53,356.03 427.07,356.68 427.61,357.31 428.15,357.93 428.69,358.52 429.23,359.10 429.77,359.66 430.31,360.20 430.85,360.72 431.39,361.22 431.93,361.70 432.47,362.16 433.01,362.61 433.55,363.03 434.09,363.44 434.63,363.84 435.17,364.21 435.71,364.57 436.25,364.92 436.79,365.24 437.34,365.56 437.88,365.86 438.42,366.14 438.96,366.41 439.50,366.67 440.04,366.91 440.58,367.15 441.12,367.36 441.66,367.57 442.20,367.77 442.74,367.95 443.28,368.13 443.82,368.29 444.36,368.45 444.90,368.59 445.44,368.73 445.98,368.86 446.52,368.98 447.06,369.10 447.60,369.20 448.14,369.30 448.68,369.40 449.22,369.49 449.76,369.57 450.30,369.64 450.84,369.71 451.38,369.78 451.92,369.84 452.46,369.90 453.00,369.95 453.54,370.00 454.08,370.05 454.62,370.09 455.16,370.13 455.70,370.16 456.24,370.20 456.78,370.23 457.32,370.26 457.86,370.28 458.40,370.31 ' style='stroke-width: 0.75; stroke: #2297E6;' />
+<polyline points='121.65,370.30 122.25,370.28 122.86,370.25 123.47,370.21 124.07,370.18 124.68,370.14 125.28,370.10 125.89,370.05 126.50,370.00 127.10,369.95 127.71,369.89 128.32,369.82 128.92,369.75 129.53,369.68 130.13,369.59 130.74,369.51 131.35,369.41 131.95,369.31 132.56,369.20 133.17,369.08 133.77,368.95 134.38,368.81 134.98,368.67 135.59,368.51 136.20,368.34 136.80,368.16 137.41,367.97 138.01,367.77 138.62,367.56 139.23,367.33 139.83,367.09 140.44,366.83 141.05,366.56 141.65,366.27 142.26,365.98 142.86,365.66 143.47,365.32 144.08,364.97 144.68,364.60 145.29,364.21 145.89,363.81 146.50,363.39 147.11,362.95 147.71,362.49 148.32,362.01 148.93,361.51 149.53,360.99 150.14,360.45 150.74,359.89 151.35,359.32 151.96,358.72 152.56,358.10 153.17,357.46 153.78,356.81 154.38,356.13 154.99,355.44 155.59,354.73 156.20,354.00 156.81,353.25 157.41,352.49 158.02,351.70 158.62,350.90 159.23,350.09 159.84,349.26 160.44,348.41 161.05,347.55 161.66,346.68 162.26,345.80 162.87,344.90 163.47,343.99 164.08,343.07 164.69,342.14 165.29,341.20 165.90,340.25 166.50,339.30 167.11,338.33 167.72,337.36 168.32,336.38 168.93,335.40 169.54,334.41 170.14,333.41 170.75,332.41 171.35,331.40 171.96,330.39 172.57,329.38 173.17,328.36 173.78,327.33 174.38,326.31 174.99,325.27 175.60,324.24 176.20,323.19 176.81,322.15 177.42,321.09 178.02,320.03 178.63,318.97 179.23,317.90 179.84,316.82 180.45,315.74 181.05,314.64 181.66,313.54 182.27,312.42 182.87,311.30 183.48,310.17 184.08,309.02 184.69,307.87 185.30,306.70 185.90,305.52 186.51,304.33 187.11,303.12 187.72,301.89 188.33,300.66 188.93,299.41 189.54,298.14 190.15,296.86 190.75,295.57 191.36,294.26 191.96,292.94 192.57,291.60 193.18,290.24 193.78,288.88 194.39,287.51 194.99,286.12 195.60,284.72 196.21,283.31 196.81,281.89 197.42,280.47 198.03,279.04 198.63,277.60 199.24,276.16 199.84,274.72 200.45,273.28 201.06,271.84 201.66,270.40 202.27,268.97 202.87,267.55 203.48,266.13 204.09,264.73 204.69,263.34 205.30,261.96 205.91,260.60 206.51,259.27 207.12,257.95 207.72,256.65 208.33,255.38 208.94,254.14 209.54,252.92 210.15,251.74 210.76,250.59 211.36,249.46 211.97,248.38 212.57,247.33 213.18,246.31 213.79,245.34 214.39,244.41 215.00,243.50 215.60,242.65 216.21,241.84 216.82,241.06 217.42,240.33 218.03,239.64 218.64,238.98 219.24,238.36 219.85,237.79 220.45,237.25 221.06,236.75 221.67,236.29 222.27,235.85 222.88,235.45 223.48,235.09 224.09,234.75 224.70,234.44 225.30,234.16 225.91,233.90 226.52,233.65 227.12,233.43 227.73,233.22 228.33,233.03 228.94,232.84 229.55,232.66 230.15,232.49 230.76,232.32 231.36,232.15 231.97,231.97 232.58,231.79 233.18,231.59 233.79,231.39 234.40,231.17 235.00,230.94 235.61,230.68 236.21,230.41 236.82,230.11 237.43,229.78 238.03,229.44 238.64,229.05 239.25,228.64 239.85,228.21 240.46,227.73 241.06,227.23 241.67,226.70 242.28,226.13 242.88,225.52 243.49,224.90 244.09,224.23 244.70,223.53 245.31,222.81 245.91,222.06 246.52,221.28 247.13,220.48 247.73,219.66 248.34,218.81 248.94,217.94 249.55,217.07 250.16,216.18 250.76,215.28 251.37,214.37 251.97,213.46 252.58,212.56 253.19,211.65 253.79,210.75 254.40,209.87 255.01,209.00 255.61,208.15 256.22,207.32 256.82,206.52 257.43,205.74 258.04,205.00 258.64,204.30 259.25,203.62 259.85,203.01 260.46,202.43 261.07,201.89 261.67,201.42 262.28,201.00 262.89,200.62 263.49,200.31 264.10,200.06 264.70,199.86 265.31,199.73 265.92,199.67 266.52,199.66 267.13,199.71 267.74,199.85 268.34,200.04 268.95,200.28 269.55,200.62 270.16,201.00 270.77,201.44 271.37,201.97 271.98,202.54 272.58,203.17 273.19,203.87 273.80,204.62 274.40,205.42 275.01,206.29 275.62,207.20 276.22,208.16 276.83,209.17 277.43,210.23 278.04,211.32 278.65,212.46 279.25,213.64 279.86,214.85 280.46,216.10 281.07,217.38 281.68,218.69 282.28,220.02 282.89,221.39 283.50,222.78 284.10,224.18 284.71,225.61 285.31,227.05 285.92,228.51 286.53,229.98 287.13,231.47 287.74,232.97 288.34,234.48 288.95,235.99 289.56,237.51 290.16,239.04 290.77,240.58 291.38,242.12 291.98,243.66 292.59,245.21 293.19,246.76 293.80,248.31 294.41,249.86 295.01,251.41 295.62,252.96 296.23,254.52 296.83,256.07 297.44,257.62 298.04,259.17 298.65,260.71 299.26,262.26 299.86,263.80 300.47,265.34 301.07,266.88 301.68,268.41 302.29,269.94 302.89,271.46 303.50,272.99 304.11,274.50 304.71,276.01 305.32,277.51 305.92,279.00 306.53,280.49 307.14,281.97 307.74,283.44 308.35,284.90 308.95,286.35 309.56,287.79 310.17,289.21 310.77,290.63 311.38,292.03 311.99,293.41 312.59,294.78 313.20,296.13 313.80,297.46 314.41,298.78 315.02,300.08 315.62,301.36 316.23,302.61 316.83,303.85 317.44,305.06 318.05,306.25 318.65,307.42 319.26,308.55 319.87,309.66 320.47,310.75 321.08,311.81 321.68,312.84 322.29,313.85 322.90,314.82 323.50,315.76 324.11,316.67 324.72,317.56 325.32,318.40 325.93,319.22 326.53,320.01 327.14,320.75 327.75,321.47 328.35,322.16 328.96,322.80 329.56,323.42 330.17,324.00 330.78,324.54 331.38,325.05 331.99,325.53 332.60,325.96 333.20,326.35 333.81,326.72 334.41,327.04 335.02,327.32 335.63,327.58 336.23,327.79 336.84,327.96 337.44,328.09 338.05,328.20 338.66,328.25 339.26,328.27 339.87,328.26 340.48,328.20 341.08,328.11 341.69,327.99 342.29,327.82 342.90,327.61 343.51,327.38 344.11,327.10 344.72,326.79 345.32,326.45 345.93,326.07 346.54,325.66 347.14,325.22 347.75,324.75 348.36,324.24 348.96,323.71 349.57,323.16 350.17,322.57 350.78,321.97 351.39,321.34 351.99,320.69 352.60,320.02 353.21,319.35 353.81,318.65 354.42,317.94 355.02,317.22 355.63,316.50 356.24,315.77 356.84,315.04 357.45,314.31 358.05,313.58 358.66,312.86 359.27,312.15 359.87,311.45 360.48,310.77 361.09,310.10 361.69,309.45 362.30,308.83 362.90,308.23 363.51,307.66 364.12,307.13 364.72,306.61 365.33,306.15 365.93,305.73 366.54,305.33 367.15,304.99 367.75,304.70 368.36,304.44 368.97,304.24 369.57,304.09 370.18,303.99 370.78,303.94 371.39,303.95 372.00,304.01 372.60,304.13 373.21,304.31 373.81,304.55 374.42,304.83 375.03,305.19 375.63,305.59 376.24,306.04 376.85,306.57 377.45,307.14 378.06,307.76 378.66,308.44 379.27,309.18 379.88,309.95 380.48,310.78 381.09,311.66 381.70,312.57 382.30,313.53 382.91,314.53 383.51,315.56 384.12,316.63 384.73,317.74 385.33,318.87 385.94,320.02 386.54,321.21 387.15,322.41 387.76,323.63 388.36,324.87 388.97,326.12 389.58,327.38 390.18,328.65 390.79,329.92 391.39,331.20 392.00,332.47 392.61,333.74 393.21,335.01 393.82,336.27 394.42,337.52 395.03,338.75 395.64,339.98 396.24,341.18 396.85,342.37 397.46,343.54 398.06,344.69 398.67,345.81 399.27,346.92 399.88,347.99 400.49,349.04 401.09,350.07 401.70,351.06 402.30,352.03 402.91,352.97 403.52,353.88 404.12,354.75 404.73,355.60 405.34,356.42 405.94,357.20 406.55,357.96 407.15,358.69 407.76,359.39 408.37,360.05 408.97,360.70 409.58,361.30 410.19,361.88 410.79,362.44 411.40,362.96 412.00,363.46 412.61,363.94 413.22,364.39 413.82,364.81 414.43,365.21 415.03,365.59 415.64,365.95 416.25,366.28 416.85,366.60 417.46,366.89 418.07,367.17 418.67,367.44 419.28,367.68 419.88,367.90 420.49,368.12 421.10,368.31 421.70,368.50 422.31,368.67 422.91,368.83 423.52,368.97 424.13,369.11 424.73,369.23 425.34,369.35 425.95,369.46 426.55,369.56 427.16,369.65 427.76,369.73 428.37,369.81 428.98,369.88 429.58,369.94 430.19,370.00 430.79,370.05 431.40,370.10 ' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg='>
+    <rect x='0.00' y='0.00' width='504.00' height='455.78' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg=)'>
+<text x='266.40' y='34.47' text-anchor='middle' style='font-size: 14.40px; font-weight: bold; font-family: "Liberation Sans";' textLength='171.81px' lengthAdjust='spacingAndGlyphs'>density.default(x = Temp)</text>
+<text x='266.40' y='437.06' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='237.51px' lengthAdjust='spacingAndGlyphs'>N = [31, 30, 31, ...]   Joint Bandwidth = 2.649</text>
+<text transform='translate(12.96,220.69) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='40.02px' lengthAdjust='spacingAndGlyphs'>Density</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_formula.svg b/inst/tinytest/_tinysnapshot/legend_keyword_formula.svg
new file mode 100644
index 00000000..63f5cb80
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_formula.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='203.81' cy='483.59' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='232.09' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='260.36' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='288.64' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='316.91' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='266.40' y='468.62' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='214.61' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='242.89' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='271.16' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='299.44' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='327.71' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.60' y1='382.34' x2='445.60' y2='382.34' style='stroke-width: 0.75;' />
+<line x1='61.60' y1='382.34' x2='61.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='125.60' y1='382.34' x2='125.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='189.60' y1='382.34' x2='189.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='253.60' y1='382.34' x2='253.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='317.60' y1='382.34' x2='317.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='381.60' y1='382.34' x2='381.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='445.60' y1='382.34' x2='445.60' y2='389.54' style='stroke-width: 0.75;' />
+<text x='61.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='125.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='189.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='253.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='317.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='381.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='445.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='341.16' x2='59.04' y2='122.12' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='341.16' x2='51.84' y2='341.16' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='268.15' x2='51.84' y2='268.15' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='195.13' x2='51.84' y2='195.13' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='122.12' x2='51.84' y2='122.12' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,341.16) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,268.15) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,195.13) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,122.12) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,382.34 473.76,382.34 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA=='>
+    <rect x='59.04' y='59.04' width='414.72' height='323.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA==)'>
+<circle cx='74.40' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='87.20' cy='253.54' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='100.00' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='112.80' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='125.60' cy='370.36' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='151.20' cy='304.65' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='164.00' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='176.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='189.60' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='202.40' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='215.20' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='228.00' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='240.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='253.60' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.40' cy='311.95' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='279.20' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='292.00' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.60' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='330.40' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='343.20' cy='246.24' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='356.00' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='368.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='381.60' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.40' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='407.20' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.00' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='432.80' cy='187.83' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='445.60' cy='202.44' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='458.40' cy='224.34' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='74.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='87.20' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='100.00' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='138.40' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='151.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='164.00' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='189.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='215.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='279.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='292.00' cy='304.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='304.80' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.60' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='343.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='356.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='368.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='381.60' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='407.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.00' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='432.80' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='74.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='87.20' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='100.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='125.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='138.40' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='151.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='164.00' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='176.80' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='189.60' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='202.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='215.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='228.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='240.80' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='253.60' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='279.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='292.00' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='304.80' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='343.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='356.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='368.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='381.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='407.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.00' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='432.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='458.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='74.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='87.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='100.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='112.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='138.40' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='151.20' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='164.00' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='189.60' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='202.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='215.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='279.20' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='304.80' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.60' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='343.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='356.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='368.80' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='381.60' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='407.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.00' cy='71.01' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='432.80' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='445.60' cy='78.32' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='458.40' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='74.40' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='87.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='100.00' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='112.80' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='125.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='138.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='151.20' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='164.00' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='176.80' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='189.60' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='202.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='215.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='228.00' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='240.80' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='253.60' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='279.20' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.60' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='330.40' cy='311.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='343.20' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='356.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='368.80' cy='275.45' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='381.60' cy='319.25' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.40' cy='268.15' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='407.20' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='432.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='445.60' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg='>
+    <rect x='0.00' y='0.00' width='504.00' height='455.78' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg=)'>
+<text x='266.40' y='437.06' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,220.69) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_left_.svg b/inst/tinytest/_tinysnapshot/legend_keyword_left_.svg
new file mode 100644
index 00000000..7a5c6054
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_left_.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='49.27' cy='223.20' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='49.27' cy='237.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='49.27' cy='252.00' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='49.27' cy='266.40' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='49.27' cy='280.80' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='55.43' y='208.80' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='60.54' y='227.33' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='60.54' y='241.73' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='60.54' y='256.13' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='60.54' y='270.53' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='60.54' y='284.93' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='143.05' y1='430.56' x2='451.17' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='143.05' y1='430.56' x2='143.05' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='194.40' y1='430.56' x2='194.40' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='245.76' y1='430.56' x2='245.76' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='297.11' y1='430.56' x2='297.11' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='348.46' y1='430.56' x2='348.46' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='399.81' y1='430.56' x2='399.81' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='451.17' y1='430.56' x2='451.17' y2='437.76' style='stroke-width: 0.75;' />
+<text x='143.05' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='194.40' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='245.76' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='297.11' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='348.46' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='399.81' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='451.17' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='141.00' y1='383.24' x2='141.00' y2='131.53' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='383.24' x2='133.80' y2='383.24' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='299.34' x2='133.80' y2='299.34' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='215.43' x2='133.80' y2='215.43' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='131.53' x2='133.80' y2='131.53' style='stroke-width: 0.75;' />
+<text transform='translate(123.72,383.24) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(123.72,299.34) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(123.72,215.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(123.72,131.53) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='141.00,430.56 473.76,430.56 473.76,59.04 141.00,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpMTQxLjAwfDQ3My43Nnw1OS4wNHw0MzAuNTY='>
+    <rect x='141.00' y='59.04' width='332.76' height='371.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTQxLjAwfDQ3My43Nnw1OS4wNHw0MzAuNTY=)'>
+<circle cx='153.32' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='163.59' cy='282.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='173.86' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='184.13' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='194.40' cy='416.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='204.67' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='214.94' cy='341.29' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='225.22' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='235.49' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='245.76' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='256.03' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.30' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='276.57' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='286.84' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='297.11' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='307.38' cy='349.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.65' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='327.92' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='338.19' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='348.46' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='358.73' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='369.00' cy='274.17' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='379.27' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='389.54' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='399.81' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='410.08' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.35' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='430.62' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='440.89' cy='207.04' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='451.17' cy='223.82' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='461.44' cy='249.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='153.32' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='163.59' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='173.86' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='184.13' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='194.40' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='204.67' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='214.94' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='225.22' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='235.49' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='245.76' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='256.03' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.30' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='276.57' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='286.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='297.11' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='307.38' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.65' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='327.92' cy='341.29' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='338.19' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='348.46' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='358.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='369.00' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='379.27' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='389.54' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='399.81' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='410.08' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.35' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='430.62' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='440.89' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='451.17' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='153.32' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='163.59' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='173.86' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='184.13' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='194.40' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='204.67' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='214.94' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='225.22' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='235.49' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='245.76' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='256.03' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.30' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='276.57' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='286.84' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='297.11' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='307.38' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.65' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='327.92' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='338.19' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='348.46' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='358.73' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='369.00' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='379.27' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='389.54' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='399.81' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='410.08' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.35' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='430.62' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='440.89' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='451.17' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='461.44' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='153.32' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='163.59' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='173.86' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='184.13' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='194.40' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='204.67' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='214.94' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='225.22' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='235.49' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='245.76' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='256.03' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.30' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='276.57' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='286.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='297.11' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='307.38' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.65' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='327.92' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='338.19' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='348.46' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='358.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='369.00' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='379.27' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='389.54' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='399.81' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='410.08' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.35' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='430.62' cy='72.80' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='440.89' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='451.17' cy='81.19' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='461.44' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='153.32' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='163.59' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='173.86' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='184.13' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='194.40' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='204.67' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='214.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='225.22' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='235.49' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='245.76' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='256.03' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.30' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='276.57' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='286.84' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='297.11' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='307.38' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.65' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='327.92' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='338.19' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='348.46' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='358.73' cy='349.68' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='369.00' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='379.27' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='389.54' cy='307.73' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='399.81' cy='358.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='410.08' cy='299.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.35' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='430.62' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='440.89' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='451.17' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpODEuOTZ8NTA0LjAwfDAuMDB8NTA0LjAw'>
+    <rect x='81.96' y='0.00' width='422.04' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpODEuOTZ8NTA0LjAwfDAuMDB8NTA0LjAw)'>
+<text x='307.38' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(94.92,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_outerbottom.svg b/inst/tinytest/_tinysnapshot/legend_keyword_outerbottom.svg
new file mode 100644
index 00000000..63f5cb80
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_outerbottom.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='203.81' cy='483.59' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='232.09' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='260.36' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='288.64' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='316.91' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='266.40' y='468.62' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='214.61' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='242.89' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='271.16' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='299.44' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='327.71' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.60' y1='382.34' x2='445.60' y2='382.34' style='stroke-width: 0.75;' />
+<line x1='61.60' y1='382.34' x2='61.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='125.60' y1='382.34' x2='125.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='189.60' y1='382.34' x2='189.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='253.60' y1='382.34' x2='253.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='317.60' y1='382.34' x2='317.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='381.60' y1='382.34' x2='381.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='445.60' y1='382.34' x2='445.60' y2='389.54' style='stroke-width: 0.75;' />
+<text x='61.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='125.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='189.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='253.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='317.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='381.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='445.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='341.16' x2='59.04' y2='122.12' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='341.16' x2='51.84' y2='341.16' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='268.15' x2='51.84' y2='268.15' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='195.13' x2='51.84' y2='195.13' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='122.12' x2='51.84' y2='122.12' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,341.16) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,268.15) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,195.13) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,122.12) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,382.34 473.76,382.34 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA=='>
+    <rect x='59.04' y='59.04' width='414.72' height='323.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA==)'>
+<circle cx='74.40' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='87.20' cy='253.54' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='100.00' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='112.80' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='125.60' cy='370.36' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='151.20' cy='304.65' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='164.00' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='176.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='189.60' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='202.40' cy='238.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='215.20' cy='275.45' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='228.00' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='240.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='253.60' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.40' cy='311.95' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='279.20' cy='297.35' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='292.00' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.60' cy='326.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='330.40' cy='348.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='343.20' cy='246.24' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='356.00' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='368.80' cy='333.86' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='381.60' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.40' cy='355.76' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='407.20' cy='363.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.00' cy='290.05' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='432.80' cy='187.83' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='445.60' cy='202.44' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='458.40' cy='224.34' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='74.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='87.20' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='100.00' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='138.40' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='151.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='164.00' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='189.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='215.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='279.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='292.00' cy='304.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='304.80' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.60' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='343.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='356.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='368.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='381.60' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='407.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.00' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='432.80' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='74.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='87.20' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='100.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='112.80' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='125.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='138.40' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='151.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='164.00' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='176.80' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='189.60' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='202.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='215.20' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='228.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='240.80' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='253.60' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='279.20' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='292.00' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='304.80' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='238.94' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='343.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='356.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='368.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='381.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.40' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='407.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.00' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='432.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='445.60' cy='173.23' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='458.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='74.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='87.20' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='100.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='112.80' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='125.60' cy='158.63' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='138.40' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='151.20' cy='129.42' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='164.00' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='176.80' cy='122.12' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='189.60' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='202.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='215.20' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='228.00' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='240.80' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='253.60' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='279.20' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='304.80' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.60' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='330.40' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='343.20' cy='253.54' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='356.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='368.80' cy='202.44' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='381.60' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.40' cy='151.33' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='407.20' cy='136.72' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.00' cy='71.01' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='432.80' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='445.60' cy='78.32' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='458.40' cy='92.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='74.40' cy='114.82' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='87.20' cy='107.52' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='100.00' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='112.80' cy='100.22' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='125.60' cy='144.03' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='138.40' cy='165.93' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='151.20' cy='195.13' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='164.00' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='176.80' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='189.60' cy='246.24' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='202.40' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='215.20' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='228.00' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='240.80' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='253.60' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.40' cy='209.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='279.20' cy='290.05' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='292.00' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='304.80' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.60' cy='180.53' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='330.40' cy='311.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='343.20' cy='260.84' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='356.00' cy='187.83' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='368.80' cy='275.45' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='381.60' cy='319.25' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.40' cy='268.15' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='407.20' cy='217.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.00' cy='231.64' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='432.80' cy='224.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='445.60' cy='282.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg='>
+    <rect x='0.00' y='0.00' width='504.00' height='455.78' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg=)'>
+<text x='266.40' y='437.06' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,220.69) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_outerbottomleft.svg b/inst/tinytest/_tinysnapshot/legend_keyword_outerbottomleft.svg
new file mode 100644
index 00000000..d94adf90
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_outerbottomleft.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='49.27' cy='358.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='49.27' cy='372.96' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='49.27' cy='387.36' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='49.27' cy='401.76' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='49.27' cy='416.16' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='55.43' y='344.16' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='60.54' y='362.69' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='60.54' y='377.09' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='60.54' y='391.49' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='60.54' y='405.89' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='60.54' y='420.29' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='143.05' y1='430.56' x2='451.17' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='143.05' y1='430.56' x2='143.05' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='194.40' y1='430.56' x2='194.40' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='245.76' y1='430.56' x2='245.76' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='297.11' y1='430.56' x2='297.11' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='348.46' y1='430.56' x2='348.46' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='399.81' y1='430.56' x2='399.81' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='451.17' y1='430.56' x2='451.17' y2='437.76' style='stroke-width: 0.75;' />
+<text x='143.05' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='194.40' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='245.76' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='297.11' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='348.46' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='399.81' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='451.17' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='141.00' y1='383.24' x2='141.00' y2='131.53' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='383.24' x2='133.80' y2='383.24' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='299.34' x2='133.80' y2='299.34' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='215.43' x2='133.80' y2='215.43' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='131.53' x2='133.80' y2='131.53' style='stroke-width: 0.75;' />
+<text transform='translate(123.72,383.24) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(123.72,299.34) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(123.72,215.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(123.72,131.53) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='141.00,430.56 473.76,430.56 473.76,59.04 141.00,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpMTQxLjAwfDQ3My43Nnw1OS4wNHw0MzAuNTY='>
+    <rect x='141.00' y='59.04' width='332.76' height='371.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTQxLjAwfDQ3My43Nnw1OS4wNHw0MzAuNTY=)'>
+<circle cx='153.32' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='163.59' cy='282.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='173.86' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='184.13' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='194.40' cy='416.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='204.67' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='214.94' cy='341.29' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='225.22' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='235.49' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='245.76' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='256.03' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.30' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='276.57' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='286.84' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='297.11' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='307.38' cy='349.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.65' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='327.92' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='338.19' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='348.46' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='358.73' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='369.00' cy='274.17' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='379.27' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='389.54' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='399.81' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='410.08' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.35' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='430.62' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='440.89' cy='207.04' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='451.17' cy='223.82' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='461.44' cy='249.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='153.32' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='163.59' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='173.86' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='184.13' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='194.40' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='204.67' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='214.94' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='225.22' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='235.49' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='245.76' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='256.03' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.30' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='276.57' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='286.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='297.11' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='307.38' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.65' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='327.92' cy='341.29' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='338.19' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='348.46' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='358.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='369.00' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='379.27' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='389.54' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='399.81' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='410.08' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.35' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='430.62' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='440.89' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='451.17' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='153.32' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='163.59' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='173.86' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='184.13' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='194.40' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='204.67' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='214.94' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='225.22' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='235.49' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='245.76' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='256.03' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.30' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='276.57' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='286.84' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='297.11' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='307.38' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.65' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='327.92' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='338.19' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='348.46' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='358.73' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='369.00' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='379.27' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='389.54' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='399.81' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='410.08' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.35' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='430.62' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='440.89' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='451.17' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='461.44' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='153.32' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='163.59' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='173.86' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='184.13' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='194.40' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='204.67' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='214.94' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='225.22' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='235.49' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='245.76' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='256.03' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.30' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='276.57' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='286.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='297.11' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='307.38' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.65' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='327.92' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='338.19' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='348.46' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='358.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='369.00' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='379.27' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='389.54' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='399.81' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='410.08' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.35' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='430.62' cy='72.80' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='440.89' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='451.17' cy='81.19' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='461.44' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='153.32' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='163.59' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='173.86' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='184.13' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='194.40' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='204.67' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='214.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='225.22' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='235.49' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='245.76' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='256.03' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.30' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='276.57' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='286.84' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='297.11' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='307.38' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.65' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='327.92' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='338.19' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='348.46' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='358.73' cy='349.68' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='369.00' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='379.27' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='389.54' cy='307.73' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='399.81' cy='358.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='410.08' cy='299.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.35' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='430.62' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='440.89' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='451.17' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpODEuOTZ8NTA0LjAwfDAuMDB8NTA0LjAw'>
+    <rect x='81.96' y='0.00' width='422.04' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpODEuOTZ8NTA0LjAwfDAuMDB8NTA0LjAw)'>
+<text x='307.38' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(94.92,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_outerleft.svg b/inst/tinytest/_tinysnapshot/legend_keyword_outerleft.svg
new file mode 100644
index 00000000..7a5c6054
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_outerleft.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='49.27' cy='223.20' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='49.27' cy='237.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='49.27' cy='252.00' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='49.27' cy='266.40' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='49.27' cy='280.80' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='55.43' y='208.80' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='60.54' y='227.33' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='60.54' y='241.73' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='60.54' y='256.13' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='60.54' y='270.53' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='60.54' y='284.93' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='143.05' y1='430.56' x2='451.17' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='143.05' y1='430.56' x2='143.05' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='194.40' y1='430.56' x2='194.40' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='245.76' y1='430.56' x2='245.76' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='297.11' y1='430.56' x2='297.11' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='348.46' y1='430.56' x2='348.46' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='399.81' y1='430.56' x2='399.81' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='451.17' y1='430.56' x2='451.17' y2='437.76' style='stroke-width: 0.75;' />
+<text x='143.05' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='194.40' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='245.76' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='297.11' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='348.46' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='399.81' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='451.17' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='141.00' y1='383.24' x2='141.00' y2='131.53' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='383.24' x2='133.80' y2='383.24' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='299.34' x2='133.80' y2='299.34' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='215.43' x2='133.80' y2='215.43' style='stroke-width: 0.75;' />
+<line x1='141.00' y1='131.53' x2='133.80' y2='131.53' style='stroke-width: 0.75;' />
+<text transform='translate(123.72,383.24) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(123.72,299.34) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(123.72,215.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(123.72,131.53) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='141.00,430.56 473.76,430.56 473.76,59.04 141.00,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpMTQxLjAwfDQ3My43Nnw1OS4wNHw0MzAuNTY='>
+    <rect x='141.00' y='59.04' width='332.76' height='371.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTQxLjAwfDQ3My43Nnw1OS4wNHw0MzAuNTY=)'>
+<circle cx='153.32' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='163.59' cy='282.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='173.86' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='184.13' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='194.40' cy='416.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='204.67' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='214.94' cy='341.29' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='225.22' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='235.49' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='245.76' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='256.03' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.30' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='276.57' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='286.84' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='297.11' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='307.38' cy='349.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.65' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='327.92' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='338.19' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='348.46' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='358.73' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='369.00' cy='274.17' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='379.27' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='389.54' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='399.81' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='410.08' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.35' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='430.62' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='440.89' cy='207.04' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='451.17' cy='223.82' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='461.44' cy='249.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='153.32' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='163.59' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='173.86' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='184.13' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='194.40' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='204.67' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='214.94' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='225.22' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='235.49' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='245.76' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='256.03' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.30' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='276.57' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='286.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='297.11' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='307.38' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.65' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='327.92' cy='341.29' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='338.19' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='348.46' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='358.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='369.00' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='379.27' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='389.54' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='399.81' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='410.08' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.35' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='430.62' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='440.89' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='451.17' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='153.32' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='163.59' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='173.86' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='184.13' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='194.40' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='204.67' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='214.94' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='225.22' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='235.49' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='245.76' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='256.03' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.30' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='276.57' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='286.84' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='297.11' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='307.38' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.65' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='327.92' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='338.19' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='348.46' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='358.73' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='369.00' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='379.27' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='389.54' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='399.81' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='410.08' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.35' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='430.62' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='440.89' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='451.17' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='461.44' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='153.32' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='163.59' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='173.86' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='184.13' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='194.40' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='204.67' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='214.94' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='225.22' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='235.49' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='245.76' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='256.03' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.30' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='276.57' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='286.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='297.11' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='307.38' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.65' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='327.92' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='338.19' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='348.46' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='358.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='369.00' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='379.27' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='389.54' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='399.81' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='410.08' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.35' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='430.62' cy='72.80' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='440.89' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='451.17' cy='81.19' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='461.44' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='153.32' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='163.59' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='173.86' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='184.13' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='194.40' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='204.67' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='214.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='225.22' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='235.49' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='245.76' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='256.03' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.30' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='276.57' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='286.84' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='297.11' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='307.38' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.65' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='327.92' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='338.19' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='348.46' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='358.73' cy='349.68' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='369.00' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='379.27' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='389.54' cy='307.73' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='399.81' cy='358.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='410.08' cy='299.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.35' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='430.62' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='440.89' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='451.17' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpODEuOTZ8NTA0LjAwfDAuMDB8NTA0LjAw'>
+    <rect x='81.96' y='0.00' width='422.04' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpODEuOTZ8NTA0LjAwfDAuMDB8NTA0LjAw)'>
+<text x='307.38' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(94.92,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_outertop.svg b/inst/tinytest/_tinysnapshot/legend_keyword_outertop.svg
new file mode 100644
index 00000000..9cc4e8ae
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_outertop.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='203.81' cy='86.65' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='232.09' cy='86.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='260.36' cy='86.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='288.64' cy='86.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='316.91' cy='86.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='266.40' y='71.69' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='214.61' y='90.78' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='242.89' y='90.78' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='271.16' y='90.78' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='299.44' y='90.78' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='327.71' y='90.78' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.60' y1='430.56' x2='445.60' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='61.60' y1='430.56' x2='61.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='125.60' y1='430.56' x2='125.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='189.60' y1='430.56' x2='189.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='253.60' y1='430.56' x2='253.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='317.60' y1='430.56' x2='317.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='381.60' y1='430.56' x2='381.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='445.60' y1='430.56' x2='445.60' y2='437.76' style='stroke-width: 0.75;' />
+<text x='61.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='125.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='189.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='253.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='317.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='381.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='445.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='389.38' x2='59.04' y2='170.35' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='389.38' x2='51.84' y2='389.38' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='316.37' x2='51.84' y2='316.37' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='243.36' x2='51.84' y2='243.36' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='170.35' x2='51.84' y2='170.35' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,389.38) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,316.37) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,243.36) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,170.35) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,430.56 473.76,430.56 473.76,107.26 59.04,107.26 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDczLjc2fDEwNy4yNnw0MzAuNTY='>
+    <rect x='59.04' y='107.26' width='414.72' height='323.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDEwNy4yNnw0MzAuNTY=)'>
+<circle cx='74.40' cy='338.27' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='87.20' cy='301.77' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='100.00' cy='287.16' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='112.80' cy='374.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='125.60' cy='418.59' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='345.57' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='151.20' cy='352.88' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='164.00' cy='396.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='176.80' cy='382.08' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='189.60' cy='323.67' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='202.40' cy='287.16' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='215.20' cy='323.67' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='228.00' cy='345.57' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='240.80' cy='330.97' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='253.60' cy='403.98' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.40' cy='360.18' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='279.20' cy='345.57' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='292.00' cy='411.28' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='304.80' cy='330.97' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.60' cy='374.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='330.40' cy='396.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='343.20' cy='294.47' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='356.00' cy='382.08' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='368.80' cy='382.08' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='381.60' cy='411.28' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.40' cy='403.98' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='407.20' cy='411.28' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.00' cy='338.27' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='432.80' cy='236.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='445.60' cy='250.66' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='458.40' cy='272.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='74.40' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='87.20' cy='287.16' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='100.00' cy='338.27' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='112.80' cy='214.15' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='125.60' cy='206.85' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='138.40' cy='250.66' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='151.20' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='164.00' cy='192.25' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='176.80' cy='170.35' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='189.60' cy='192.25' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='148.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='215.20' cy='155.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='228.00' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='240.80' cy='243.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='253.60' cy='250.66' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='279.20' cy='301.77' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='292.00' cy='352.88' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='304.80' cy='294.47' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.60' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='343.20' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='356.00' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='368.80' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='381.60' cy='279.86' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.40' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='407.20' cy='294.47' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.00' cy='243.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='432.80' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='445.60' cy='221.45' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='74.40' cy='214.15' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='87.20' cy='206.85' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='100.00' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='112.80' cy='214.15' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='125.60' cy='221.45' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='138.40' cy='221.45' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='151.20' cy='184.95' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='164.00' cy='155.74' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='176.80' cy='155.74' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='189.60' cy='177.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='202.40' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='215.20' cy='294.47' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='228.00' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='240.80' cy='163.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='253.60' cy='243.36' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.40' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='279.20' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='292.00' cy='214.15' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='304.80' cy='192.25' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.60' cy='206.85' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='287.16' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='343.20' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='356.00' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='368.80' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='381.60' cy='206.85' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.40' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='407.20' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.00' cy='184.95' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='432.80' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='445.60' cy='221.45' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='458.40' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='74.40' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='87.20' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='100.00' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='112.80' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='125.60' cy='206.85' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='138.40' cy='192.25' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='151.20' cy='177.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='164.00' cy='170.35' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='176.80' cy='170.35' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='189.60' cy='155.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='202.40' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='215.20' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='228.00' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='240.80' cy='243.36' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='253.60' cy='250.66' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.40' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='279.20' cy='250.66' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='292.00' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='304.80' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.60' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='330.40' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='343.20' cy='301.77' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='356.00' cy='279.86' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='368.80' cy='250.66' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='381.60' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.40' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='407.20' cy='184.95' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.00' cy='119.24' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='432.80' cy='141.14' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='445.60' cy='126.54' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='458.40' cy='141.14' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='74.40' cy='163.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='87.20' cy='155.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='100.00' cy='148.44' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='112.80' cy='148.44' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='125.60' cy='192.25' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='138.40' cy='214.15' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='151.20' cy='243.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='164.00' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='176.80' cy='279.86' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='189.60' cy='294.47' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='202.40' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='215.20' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='228.00' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='240.80' cy='309.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='253.60' cy='309.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.40' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='279.20' cy='338.27' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='292.00' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='304.80' cy='330.97' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.60' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='330.40' cy='360.18' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='343.20' cy='309.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='356.00' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='368.80' cy='323.67' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='381.60' cy='367.48' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.40' cy='316.37' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='407.20' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.00' cy='279.86' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='432.80' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='445.60' cy='330.97' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8NDguMjJ8NTA0LjAw'>
+    <rect x='0.00' y='48.22' width='504.00' height='455.78' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8NDguMjJ8NTA0LjAw)'>
+<text x='266.40' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,268.91) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_outertopright.svg b/inst/tinytest/_tinysnapshot/legend_keyword_outertopright.svg
new file mode 100644
index 00000000..65a38c68
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_outertopright.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='467.74' cy='87.84' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='467.74' cy='102.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='467.74' cy='116.64' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='467.74' cy='131.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='467.74' cy='145.44' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='473.83' y='73.44' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='478.74' y='91.97' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='478.74' y='106.37' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='478.74' y='120.77' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='478.74' y='135.17' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='478.74' y='149.57' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.42' y1='430.56' x2='418.26' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='61.42' y1='430.56' x2='61.42' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='120.89' y1='430.56' x2='120.89' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='180.36' y1='430.56' x2='180.36' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='239.84' y1='430.56' x2='239.84' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='299.31' y1='430.56' x2='299.31' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='358.78' y1='430.56' x2='358.78' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='418.26' y1='430.56' x2='418.26' y2='437.76' style='stroke-width: 0.75;' />
+<text x='61.42' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='120.89' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='180.36' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='239.84' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='299.31' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='358.78' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='418.26' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='383.24' x2='59.04' y2='131.53' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='383.24' x2='51.84' y2='383.24' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='299.34' x2='51.84' y2='299.34' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='215.43' x2='51.84' y2='215.43' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='131.53' x2='51.84' y2='131.53' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,383.24) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,299.34) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,215.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,131.53) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,430.56 444.42,430.56 444.42,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDQ0LjQyfDU5LjA0fDQzMC41Ng=='>
+    <rect x='59.04' y='59.04' width='385.38' height='371.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDQ0LjQyfDU5LjA0fDQzMC41Ng==)'>
+<circle cx='73.31' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='85.21' cy='282.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='97.10' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='109.00' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='120.89' cy='416.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='132.79' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='144.68' cy='341.29' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='156.58' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='168.47' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='180.36' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='192.26' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='204.15' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='216.05' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='227.94' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='239.84' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='251.73' cy='349.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='263.63' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='275.52' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='287.42' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='299.31' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='311.20' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='323.10' cy='274.17' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='334.99' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='346.89' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='358.78' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='370.68' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='382.57' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.47' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='406.36' cy='207.04' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='418.26' cy='223.82' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='430.15' cy='249.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='73.31' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='85.21' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='97.10' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='109.00' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='120.89' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='132.79' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='144.68' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='156.58' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='168.47' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='180.36' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='192.26' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='204.15' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='216.05' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='227.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='239.84' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='251.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='263.63' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='275.52' cy='341.29' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='287.42' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='299.31' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='311.20' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='323.10' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='334.99' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='346.89' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='358.78' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='370.68' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='382.57' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.47' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='406.36' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='418.26' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='73.31' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='85.21' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='97.10' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='109.00' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='120.89' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='132.79' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='144.68' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='156.58' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='168.47' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='180.36' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='192.26' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='204.15' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='216.05' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='227.94' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='239.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='251.73' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='263.63' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='275.52' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='287.42' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='299.31' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='311.20' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='323.10' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='334.99' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='346.89' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='358.78' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='370.68' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='382.57' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.47' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='406.36' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='418.26' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='430.15' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='73.31' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='85.21' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='97.10' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='109.00' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='120.89' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='132.79' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='144.68' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='156.58' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='168.47' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='180.36' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='192.26' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='204.15' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='216.05' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='227.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='239.84' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='251.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='263.63' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='275.52' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='287.42' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='299.31' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='311.20' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='323.10' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='334.99' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='346.89' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='358.78' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='370.68' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='382.57' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.47' cy='72.80' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='406.36' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='418.26' cy='81.19' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='430.15' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='73.31' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='85.21' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='97.10' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='109.00' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='120.89' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='132.79' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='144.68' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='156.58' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='168.47' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='180.36' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='192.26' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='204.15' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='216.05' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='227.94' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='239.84' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='251.73' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='263.63' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='275.52' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='287.42' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='299.31' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='311.20' cy='349.68' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='323.10' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='334.99' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='346.89' cy='307.73' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='358.78' cy='358.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='370.68' cy='299.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='382.57' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.47' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='406.36' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='418.26' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw0NDUuODZ8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='445.86' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0NDUuODZ8MC4wMHw1MDQuMDA=)'>
+<text x='251.73' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_top_.svg b/inst/tinytest/_tinysnapshot/legend_keyword_top_.svg
new file mode 100644
index 00000000..9cc4e8ae
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_top_.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='203.81' cy='86.65' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='232.09' cy='86.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='260.36' cy='86.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='288.64' cy='86.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='316.91' cy='86.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='266.40' y='71.69' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='214.61' y='90.78' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='242.89' y='90.78' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='271.16' y='90.78' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='299.44' y='90.78' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='327.71' y='90.78' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.60' y1='430.56' x2='445.60' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='61.60' y1='430.56' x2='61.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='125.60' y1='430.56' x2='125.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='189.60' y1='430.56' x2='189.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='253.60' y1='430.56' x2='253.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='317.60' y1='430.56' x2='317.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='381.60' y1='430.56' x2='381.60' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='445.60' y1='430.56' x2='445.60' y2='437.76' style='stroke-width: 0.75;' />
+<text x='61.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='125.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='189.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='253.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='317.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='381.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='445.60' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='389.38' x2='59.04' y2='170.35' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='389.38' x2='51.84' y2='389.38' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='316.37' x2='51.84' y2='316.37' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='243.36' x2='51.84' y2='243.36' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='170.35' x2='51.84' y2='170.35' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,389.38) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,316.37) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,243.36) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,170.35) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,430.56 473.76,430.56 473.76,107.26 59.04,107.26 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDczLjc2fDEwNy4yNnw0MzAuNTY='>
+    <rect x='59.04' y='107.26' width='414.72' height='323.30' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDEwNy4yNnw0MzAuNTY=)'>
+<circle cx='74.40' cy='338.27' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='87.20' cy='301.77' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='100.00' cy='287.16' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='112.80' cy='374.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='125.60' cy='418.59' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='345.57' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='151.20' cy='352.88' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='164.00' cy='396.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='176.80' cy='382.08' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='189.60' cy='323.67' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='202.40' cy='287.16' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='215.20' cy='323.67' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='228.00' cy='345.57' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='240.80' cy='330.97' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='253.60' cy='403.98' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='266.40' cy='360.18' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='279.20' cy='345.57' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='292.00' cy='411.28' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='304.80' cy='330.97' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='317.60' cy='374.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='330.40' cy='396.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='343.20' cy='294.47' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='356.00' cy='382.08' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='368.80' cy='382.08' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='381.60' cy='411.28' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.40' cy='403.98' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='407.20' cy='411.28' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='420.00' cy='338.27' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='432.80' cy='236.06' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='445.60' cy='250.66' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='458.40' cy='272.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='74.40' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='87.20' cy='287.16' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='100.00' cy='338.27' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='112.80' cy='214.15' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='125.60' cy='206.85' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='138.40' cy='250.66' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='151.20' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='164.00' cy='192.25' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='176.80' cy='170.35' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='189.60' cy='192.25' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='148.44' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='215.20' cy='155.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='228.00' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='240.80' cy='243.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='253.60' cy='250.66' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='279.20' cy='301.77' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='292.00' cy='352.88' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='304.80' cy='294.47' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='317.60' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='343.20' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='356.00' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='368.80' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='381.60' cy='279.86' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.40' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='407.20' cy='294.47' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='420.00' cy='243.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='432.80' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='445.60' cy='221.45' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='74.40' cy='214.15' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='87.20' cy='206.85' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='100.00' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='112.80' cy='214.15' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='125.60' cy='221.45' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='138.40' cy='221.45' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='151.20' cy='184.95' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='164.00' cy='155.74' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='176.80' cy='155.74' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='189.60' cy='177.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='202.40' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='215.20' cy='294.47' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='228.00' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='240.80' cy='163.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='253.60' cy='243.36' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.40' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='279.20' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='292.00' cy='214.15' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='304.80' cy='192.25' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='317.60' cy='206.85' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='287.16' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='343.20' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='356.00' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='368.80' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='381.60' cy='206.85' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.40' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='407.20' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='420.00' cy='184.95' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='432.80' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='445.60' cy='221.45' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='458.40' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='74.40' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='87.20' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='100.00' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='112.80' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='125.60' cy='206.85' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='138.40' cy='192.25' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='151.20' cy='177.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='164.00' cy='170.35' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='176.80' cy='170.35' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='189.60' cy='155.74' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='202.40' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='215.20' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='228.00' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='240.80' cy='243.36' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='253.60' cy='250.66' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='266.40' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='279.20' cy='250.66' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='292.00' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='304.80' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='317.60' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='330.40' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='343.20' cy='301.77' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='356.00' cy='279.86' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='368.80' cy='250.66' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='381.60' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.40' cy='199.55' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='407.20' cy='184.95' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='420.00' cy='119.24' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='432.80' cy='141.14' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='445.60' cy='126.54' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='458.40' cy='141.14' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='74.40' cy='163.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='87.20' cy='155.74' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='100.00' cy='148.44' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='112.80' cy='148.44' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='125.60' cy='192.25' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='138.40' cy='214.15' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='151.20' cy='243.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='164.00' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='176.80' cy='279.86' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='189.60' cy='294.47' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='202.40' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='215.20' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='228.00' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='240.80' cy='309.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='253.60' cy='309.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='266.40' cy='257.96' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='279.20' cy='338.27' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='292.00' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='304.80' cy='330.97' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='317.60' cy='228.76' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='330.40' cy='360.18' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='343.20' cy='309.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='356.00' cy='236.06' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='368.80' cy='323.67' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='381.60' cy='367.48' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.40' cy='316.37' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='407.20' cy='265.26' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='420.00' cy='279.86' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='432.80' cy='272.56' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='445.60' cy='330.97' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8NDguMjJ8NTA0LjAw'>
+    <rect x='0.00' y='48.22' width='504.00' height='455.78' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8NDguMjJ8NTA0LjAw)'>
+<text x='266.40' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,268.91) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_keyword_topright_.svg b/inst/tinytest/_tinysnapshot/legend_keyword_topright_.svg
new file mode 100644
index 00000000..65a38c68
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_keyword_topright_.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='467.74' cy='87.84' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='467.74' cy='102.24' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='467.74' cy='116.64' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='467.74' cy='131.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='467.74' cy='145.44' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='473.83' y='73.44' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='478.74' y='91.97' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='478.74' y='106.37' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='478.74' y='120.77' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='478.74' y='135.17' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='478.74' y='149.57' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.42' y1='430.56' x2='418.26' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='61.42' y1='430.56' x2='61.42' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='120.89' y1='430.56' x2='120.89' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='180.36' y1='430.56' x2='180.36' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='239.84' y1='430.56' x2='239.84' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='299.31' y1='430.56' x2='299.31' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='358.78' y1='430.56' x2='358.78' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='418.26' y1='430.56' x2='418.26' y2='437.76' style='stroke-width: 0.75;' />
+<text x='61.42' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='120.89' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='180.36' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='239.84' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='299.31' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='358.78' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='418.26' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='383.24' x2='59.04' y2='131.53' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='383.24' x2='51.84' y2='383.24' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='299.34' x2='51.84' y2='299.34' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='215.43' x2='51.84' y2='215.43' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='131.53' x2='51.84' y2='131.53' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,383.24) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,299.34) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,215.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,131.53) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,430.56 444.42,430.56 444.42,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDQ0LjQyfDU5LjA0fDQzMC41Ng=='>
+    <rect x='59.04' y='59.04' width='385.38' height='371.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDQ0LjQyfDU5LjA0fDQzMC41Ng==)'>
+<circle cx='73.31' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='85.21' cy='282.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='97.10' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='109.00' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='120.89' cy='416.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='132.79' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='144.68' cy='341.29' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='156.58' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='168.47' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='180.36' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='192.26' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='204.15' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='216.05' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='227.94' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='239.84' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='251.73' cy='349.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='263.63' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='275.52' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='287.42' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='299.31' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='311.20' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='323.10' cy='274.17' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='334.99' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='346.89' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='358.78' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='370.68' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='382.57' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.47' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='406.36' cy='207.04' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='418.26' cy='223.82' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='430.15' cy='249.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='73.31' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='85.21' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='97.10' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='109.00' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='120.89' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='132.79' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='144.68' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='156.58' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='168.47' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='180.36' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='192.26' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='204.15' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='216.05' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='227.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='239.84' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='251.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='263.63' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='275.52' cy='341.29' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='287.42' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='299.31' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='311.20' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='323.10' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='334.99' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='346.89' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='358.78' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='370.68' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='382.57' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.47' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='406.36' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='418.26' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='73.31' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='85.21' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='97.10' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='109.00' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='120.89' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='132.79' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='144.68' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='156.58' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='168.47' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='180.36' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='192.26' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='204.15' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='216.05' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='227.94' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='239.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='251.73' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='263.63' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='275.52' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='287.42' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='299.31' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='311.20' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='323.10' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='334.99' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='346.89' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='358.78' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='370.68' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='382.57' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.47' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='406.36' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='418.26' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='430.15' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='73.31' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='85.21' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='97.10' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='109.00' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='120.89' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='132.79' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='144.68' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='156.58' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='168.47' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='180.36' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='192.26' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='204.15' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='216.05' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='227.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='239.84' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='251.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='263.63' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='275.52' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='287.42' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='299.31' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='311.20' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='323.10' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='334.99' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='346.89' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='358.78' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='370.68' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='382.57' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.47' cy='72.80' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='406.36' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='418.26' cy='81.19' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='430.15' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='73.31' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='85.21' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='97.10' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='109.00' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='120.89' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='132.79' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='144.68' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='156.58' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='168.47' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='180.36' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='192.26' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='204.15' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='216.05' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='227.94' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='239.84' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='251.73' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='263.63' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='275.52' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='287.42' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='299.31' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='311.20' cy='349.68' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='323.10' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='334.99' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='346.89' cy='307.73' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='358.78' cy='358.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='370.68' cy='299.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='382.57' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.47' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='406.36' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='418.26' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw0NDUuODZ8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='445.86' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0NDUuODZ8MC4wMHw1MDQuMDA=)'>
+<text x='251.73' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_title_null.svg b/inst/tinytest/_tinysnapshot/legend_title_null.svg
new file mode 100644
index 00000000..52e2c5e1
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_title_null.svg
@@ -0,0 +1,229 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='473.14' cy='216.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='473.14' cy='230.40' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='473.14' cy='244.80' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='473.14' cy='259.20' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='473.14' cy='273.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='484.10' y='220.13' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='484.10' y='234.53' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='484.10' y='248.93' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='484.10' y='263.33' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='484.10' y='277.73' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.47' y1='430.56' x2='425.36' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='61.47' y1='430.56' x2='61.47' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='122.12' y1='430.56' x2='122.12' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='182.76' y1='430.56' x2='182.76' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='243.41' y1='430.56' x2='243.41' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='304.06' y1='430.56' x2='304.06' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='364.71' y1='430.56' x2='364.71' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='425.36' y1='430.56' x2='425.36' y2='437.76' style='stroke-width: 0.75;' />
+<text x='61.47' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='122.12' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='182.76' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='243.41' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='304.06' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='364.71' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='425.36' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='383.24' x2='59.04' y2='131.53' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='383.24' x2='51.84' y2='383.24' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='299.34' x2='51.84' y2='299.34' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='215.43' x2='51.84' y2='215.43' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='131.53' x2='51.84' y2='131.53' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,383.24) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,299.34) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,215.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,131.53) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,430.56 452.05,430.56 452.05,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDUyLjA1fDU5LjA0fDQzMC41Ng=='>
+    <rect x='59.04' y='59.04' width='393.01' height='371.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDUyLjA1fDU5LjA0fDQzMC41Ng==)'>
+<circle cx='73.60' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='85.73' cy='282.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='97.86' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='109.99' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='122.12' cy='416.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='134.25' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='146.38' cy='341.29' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='158.51' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='170.63' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='182.76' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='194.89' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='207.02' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='219.15' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='231.28' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='243.41' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='255.54' cy='349.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='267.67' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='279.80' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='291.93' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='304.06' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='316.19' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='328.32' cy='274.17' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='340.45' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='352.58' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='364.71' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='376.84' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='388.97' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='401.10' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='413.23' cy='207.04' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='425.36' cy='223.82' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='437.49' cy='249.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='73.60' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='85.73' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='97.86' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='109.99' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='122.12' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='134.25' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='146.38' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='158.51' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='170.63' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='182.76' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='194.89' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='207.02' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='219.15' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='231.28' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='243.41' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='255.54' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='267.67' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='279.80' cy='341.29' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='291.93' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='304.06' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='316.19' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='328.32' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='340.45' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='352.58' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='364.71' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='376.84' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='388.97' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='401.10' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='413.23' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='425.36' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='73.60' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='85.73' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='97.86' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='109.99' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='122.12' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='134.25' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='146.38' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='158.51' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='170.63' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='182.76' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='194.89' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='207.02' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='219.15' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='231.28' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='243.41' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='255.54' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='267.67' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='279.80' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='291.93' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='304.06' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='316.19' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='328.32' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='340.45' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='352.58' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='364.71' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='376.84' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='388.97' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='401.10' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='413.23' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='425.36' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='437.49' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='73.60' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='85.73' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='97.86' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='109.99' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='122.12' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='134.25' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='146.38' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='158.51' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='170.63' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='182.76' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='194.89' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='207.02' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='219.15' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='231.28' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='243.41' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='255.54' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='267.67' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='279.80' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='291.93' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='304.06' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='316.19' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='328.32' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='340.45' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='352.58' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='364.71' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='376.84' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='388.97' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='401.10' cy='72.80' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='413.23' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='425.36' cy='81.19' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='437.49' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='73.60' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='85.73' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='97.86' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='109.99' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='122.12' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='134.25' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='146.38' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='158.51' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='170.63' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='182.76' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='194.89' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='207.02' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='219.15' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='231.28' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='243.41' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='255.54' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='267.67' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='279.80' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='291.93' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='304.06' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='316.19' cy='349.68' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='328.32' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='340.45' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='352.58' cy='307.73' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='364.71' cy='358.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='376.84' cy='299.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='388.97' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='401.10' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='413.23' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='425.36' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw0NTMuNDl8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='453.49' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0NTMuNDl8MC4wMHw1MDQuMDA=)'>
+<text x='255.54' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_true.svg b/inst/tinytest/_tinysnapshot/legend_true.svg
new file mode 100644
index 00000000..032cf32c
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_true.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='467.74' cy='223.20' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='467.74' cy='237.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='467.74' cy='252.00' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='467.74' cy='266.40' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='467.74' cy='280.80' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='473.83' y='208.80' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='478.74' y='227.33' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='478.74' y='241.73' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='478.74' y='256.13' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='478.74' y='270.53' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='478.74' y='284.93' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.42' y1='430.56' x2='418.26' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='61.42' y1='430.56' x2='61.42' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='120.89' y1='430.56' x2='120.89' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='180.36' y1='430.56' x2='180.36' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='239.84' y1='430.56' x2='239.84' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='299.31' y1='430.56' x2='299.31' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='358.78' y1='430.56' x2='358.78' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='418.26' y1='430.56' x2='418.26' y2='437.76' style='stroke-width: 0.75;' />
+<text x='61.42' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='120.89' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='180.36' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='239.84' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='299.31' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='358.78' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='418.26' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='383.24' x2='59.04' y2='131.53' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='383.24' x2='51.84' y2='383.24' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='299.34' x2='51.84' y2='299.34' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='215.43' x2='51.84' y2='215.43' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='131.53' x2='51.84' y2='131.53' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,383.24) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,299.34) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,215.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,131.53) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,430.56 444.42,430.56 444.42,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDQ0LjQyfDU5LjA0fDQzMC41Ng=='>
+    <rect x='59.04' y='59.04' width='385.38' height='371.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDQ0LjQyfDU5LjA0fDQzMC41Ng==)'>
+<circle cx='73.31' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='85.21' cy='282.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='97.10' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='109.00' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='120.89' cy='416.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='132.79' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='144.68' cy='341.29' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='156.58' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='168.47' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='180.36' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='192.26' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='204.15' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='216.05' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='227.94' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='239.84' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='251.73' cy='349.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='263.63' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='275.52' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='287.42' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='299.31' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='311.20' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='323.10' cy='274.17' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='334.99' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='346.89' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='358.78' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='370.68' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='382.57' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.47' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='406.36' cy='207.04' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='418.26' cy='223.82' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='430.15' cy='249.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='73.31' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='85.21' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='97.10' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='109.00' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='120.89' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='132.79' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='144.68' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='156.58' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='168.47' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='180.36' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='192.26' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='204.15' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='216.05' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='227.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='239.84' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='251.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='263.63' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='275.52' cy='341.29' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='287.42' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='299.31' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='311.20' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='323.10' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='334.99' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='346.89' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='358.78' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='370.68' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='382.57' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.47' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='406.36' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='418.26' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='73.31' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='85.21' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='97.10' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='109.00' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='120.89' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='132.79' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='144.68' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='156.58' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='168.47' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='180.36' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='192.26' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='204.15' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='216.05' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='227.94' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='239.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='251.73' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='263.63' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='275.52' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='287.42' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='299.31' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='311.20' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='323.10' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='334.99' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='346.89' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='358.78' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='370.68' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='382.57' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.47' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='406.36' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='418.26' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='430.15' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='73.31' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='85.21' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='97.10' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='109.00' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='120.89' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='132.79' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='144.68' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='156.58' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='168.47' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='180.36' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='192.26' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='204.15' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='216.05' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='227.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='239.84' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='251.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='263.63' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='275.52' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='287.42' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='299.31' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='311.20' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='323.10' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='334.99' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='346.89' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='358.78' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='370.68' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='382.57' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.47' cy='72.80' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='406.36' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='418.26' cy='81.19' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='430.15' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='73.31' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='85.21' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='97.10' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='109.00' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='120.89' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='132.79' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='144.68' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='156.58' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='168.47' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='180.36' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='192.26' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='204.15' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='216.05' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='227.94' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='239.84' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='251.73' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='263.63' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='275.52' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='287.42' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='299.31' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='311.20' cy='349.68' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='323.10' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='334.99' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='346.89' cy='307.73' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='358.78' cy='358.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='370.68' cy='299.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='382.57' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.47' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='406.36' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='418.26' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw0NDUuODZ8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='445.86' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0NDUuODZ8MC4wMHw1MDQuMDA=)'>
+<text x='251.73' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_user_labs.svg b/inst/tinytest/_tinysnapshot/legend_user_labs.svg
new file mode 100644
index 00000000..24a7a275
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_user_labs.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='379.26' cy='223.20' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='379.26' cy='237.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='379.26' cy='252.00' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='379.26' cy='266.40' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='379.26' cy='280.80' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='393.45' y='208.80' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='390.68' y='227.33' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='22.68px' lengthAdjust='spacingAndGlyphs'>May</text>
+<text x='390.68' y='241.73' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='19.35px' lengthAdjust='spacingAndGlyphs'>Jun</text>
+<text x='390.68' y='256.13' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='15.34px' lengthAdjust='spacingAndGlyphs'>Jul</text>
+<text x='390.68' y='270.53' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.36px' lengthAdjust='spacingAndGlyphs'>Aug</text>
+<text x='390.68' y='284.93' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.36px' lengthAdjust='spacingAndGlyphs'>Sep</text>
+<line x1='60.89' y1='430.56' x2='339.09' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='60.89' y1='430.56' x2='60.89' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='107.26' y1='430.56' x2='107.26' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='153.63' y1='430.56' x2='153.63' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='199.99' y1='430.56' x2='199.99' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='246.36' y1='430.56' x2='246.36' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='292.73' y1='430.56' x2='292.73' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='339.09' y1='430.56' x2='339.09' y2='437.76' style='stroke-width: 0.75;' />
+<text x='60.89' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='107.26' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='153.63' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='199.99' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='246.36' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='292.73' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='339.09' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='383.24' x2='59.04' y2='131.53' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='383.24' x2='51.84' y2='383.24' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='299.34' x2='51.84' y2='299.34' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='215.43' x2='51.84' y2='215.43' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='131.53' x2='51.84' y2='131.53' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,383.24) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,299.34) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,215.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,131.53) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,430.56 359.49,430.56 359.49,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8MzU5LjQ5fDU5LjA0fDQzMC41Ng=='>
+    <rect x='59.04' y='59.04' width='300.45' height='371.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8MzU5LjQ5fDU5LjA0fDQzMC41Ng==)'>
+<circle cx='70.17' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='79.44' cy='282.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='88.71' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='97.99' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='107.26' cy='416.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='116.53' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='125.81' cy='341.29' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='135.08' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='144.35' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='153.63' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='162.90' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='172.17' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='181.45' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='190.72' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='199.99' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='209.27' cy='349.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='218.54' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='227.81' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='237.09' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='246.36' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='255.63' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='264.91' cy='274.17' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='274.18' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='283.45' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='292.73' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='302.00' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='311.27' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='320.54' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='329.82' cy='207.04' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='339.09' cy='223.82' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='348.36' cy='249.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='70.17' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='79.44' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='88.71' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='97.99' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='107.26' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='116.53' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='125.81' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='135.08' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='144.35' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='153.63' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='162.90' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='172.17' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='181.45' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='190.72' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='199.99' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='209.27' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='218.54' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='227.81' cy='341.29' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='237.09' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='246.36' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='255.63' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='264.91' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='274.18' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='283.45' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='292.73' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='302.00' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='311.27' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='320.54' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='329.82' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='339.09' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='70.17' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='79.44' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='88.71' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='97.99' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='107.26' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='116.53' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='125.81' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='135.08' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='144.35' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='153.63' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='162.90' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='172.17' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='181.45' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='190.72' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='199.99' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='209.27' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='218.54' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='227.81' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='237.09' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='246.36' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='255.63' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='264.91' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='274.18' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='283.45' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='292.73' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='302.00' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='311.27' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='320.54' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='329.82' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='339.09' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='348.36' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='70.17' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='79.44' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='88.71' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='97.99' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='107.26' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='116.53' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='125.81' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='135.08' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='144.35' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='153.63' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='162.90' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='172.17' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='181.45' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='190.72' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='199.99' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='209.27' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='218.54' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='227.81' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='237.09' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='246.36' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='255.63' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='264.91' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='274.18' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='283.45' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='292.73' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='302.00' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='311.27' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='320.54' cy='72.80' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='329.82' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='339.09' cy='81.19' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='348.36' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='70.17' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='79.44' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='88.71' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='97.99' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='107.26' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='116.53' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='125.81' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='135.08' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='144.35' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='153.63' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='162.90' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='172.17' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='181.45' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='190.72' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='199.99' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='209.27' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='218.54' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='227.81' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='237.09' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='246.36' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='255.63' cy='349.68' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='264.91' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='274.18' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='283.45' cy='307.73' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='292.73' cy='358.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='302.00' cy='299.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='311.27' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='320.54' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='329.82' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='339.09' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHwzNjAuOTN8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='360.93' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHwzNjAuOTN8MC4wMHw1MDQuMDA=)'>
+<text x='209.27' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/legend_user_labs_override.svg b/inst/tinytest/_tinysnapshot/legend_user_labs_override.svg
new file mode 100644
index 00000000..032cf32c
--- /dev/null
+++ b/inst/tinytest/_tinysnapshot/legend_user_labs_override.svg
@@ -0,0 +1,230 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='504.00pt' height='504.00pt' viewBox='0 0 504.00 504.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='504.00' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
+<circle cx='467.74' cy='223.20' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='467.74' cy='237.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='467.74' cy='252.00' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='467.74' cy='266.40' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='467.74' cy='280.80' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='473.83' y='208.80' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='33.36px' lengthAdjust='spacingAndGlyphs'>Month</text>
+<text x='478.74' y='227.33' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='478.74' y='241.73' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='478.74' y='256.13' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='478.74' y='270.53' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='478.74' y='284.93' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.42' y1='430.56' x2='418.26' y2='430.56' style='stroke-width: 0.75;' />
+<line x1='61.42' y1='430.56' x2='61.42' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='120.89' y1='430.56' x2='120.89' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='180.36' y1='430.56' x2='180.36' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='239.84' y1='430.56' x2='239.84' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='299.31' y1='430.56' x2='299.31' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='358.78' y1='430.56' x2='358.78' y2='437.76' style='stroke-width: 0.75;' />
+<line x1='418.26' y1='430.56' x2='418.26' y2='437.76' style='stroke-width: 0.75;' />
+<text x='61.42' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='120.89' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='180.36' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='239.84' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='299.31' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='358.78' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='418.26' y='456.48' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='383.24' x2='59.04' y2='131.53' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='383.24' x2='51.84' y2='383.24' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='299.34' x2='51.84' y2='299.34' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='215.43' x2='51.84' y2='215.43' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='131.53' x2='51.84' y2='131.53' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,383.24) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,299.34) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,215.43) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,131.53) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,430.56 444.42,430.56 444.42,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+</g>
+<defs>
+  <clipPath id='cpNTkuMDR8NDQ0LjQyfDU5LjA0fDQzMC41Ng=='>
+    <rect x='59.04' y='59.04' width='385.38' height='371.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNTkuMDR8NDQ0LjQyfDU5LjA0fDQzMC41Ng==)'>
+<circle cx='73.31' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='85.21' cy='282.56' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='97.10' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='109.00' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='120.89' cy='416.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='132.79' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='144.68' cy='341.29' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='156.58' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='168.47' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='180.36' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='192.26' cy='265.78' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='204.15' cy='307.73' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='216.05' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='227.94' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='239.84' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='251.73' cy='349.68' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='263.63' cy='332.90' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='275.52' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='287.42' cy='316.12' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='299.31' cy='366.46' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='311.20' cy='391.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='323.10' cy='274.17' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='334.99' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='346.89' cy='374.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='358.78' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='370.68' cy='400.02' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='382.57' cy='408.41' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='394.47' cy='324.51' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='406.36' cy='207.04' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='418.26' cy='223.82' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='430.15' cy='249.00' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='73.31' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='85.21' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='97.10' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='109.00' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='120.89' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='132.79' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='144.68' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='156.58' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='168.47' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='180.36' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='192.26' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='204.15' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='216.05' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='227.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='239.84' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='251.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='263.63' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='275.52' cy='341.29' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='287.42' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='299.31' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='311.20' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='323.10' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='334.99' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='346.89' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='358.78' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='370.68' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='382.57' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='394.47' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='406.36' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='418.26' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='73.31' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='85.21' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='97.10' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='109.00' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='120.89' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='132.79' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='144.68' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='156.58' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='168.47' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='180.36' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='192.26' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='204.15' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='216.05' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='227.94' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='239.84' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='251.73' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='263.63' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='275.52' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='287.42' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='299.31' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='311.20' cy='265.78' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='323.10' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='334.99' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='346.89' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='358.78' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='370.68' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='382.57' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.47' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='406.36' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='418.26' cy='190.26' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='430.15' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='73.31' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='85.21' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='97.10' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='109.00' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='120.89' cy='173.48' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='132.79' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='144.68' cy='139.92' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='156.58' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='168.47' cy='131.53' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='180.36' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='192.26' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='204.15' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='216.05' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='227.94' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='239.84' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='251.73' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='263.63' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='275.52' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='287.42' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='299.31' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='311.20' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='323.10' cy='282.56' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='334.99' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='346.89' cy='223.82' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='358.78' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='370.68' cy='165.09' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='382.57' cy='148.31' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='394.47' cy='72.80' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='406.36' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='418.26' cy='81.19' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='430.15' cy='97.97' r='2.70' style='stroke-width: 0.75; stroke: #2297E6;' />
+<circle cx='73.31' cy='123.14' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='85.21' cy='114.75' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='97.10' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='109.00' cy='106.36' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='120.89' cy='156.70' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='132.79' cy='181.87' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='144.68' cy='215.43' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='156.58' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='168.47' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='180.36' cy='274.17' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='192.26' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='204.15' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='216.05' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='227.94' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='239.84' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='251.73' cy='232.21' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='263.63' cy='324.51' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='275.52' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='287.42' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='299.31' cy='198.65' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='311.20' cy='349.68' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='323.10' cy='290.95' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='334.99' cy='207.04' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='346.89' cy='307.73' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='358.78' cy='358.07' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='370.68' cy='299.34' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='382.57' cy='240.60' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='394.47' cy='257.39' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='406.36' cy='249.00' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<circle cx='418.26' cy='316.12' r='2.70' style='stroke-width: 0.75; stroke: #28E2E5;' />
+</g>
+<defs>
+  <clipPath id='cpMC4wMHw0NDUuODZ8MC4wMHw1MDQuMDA='>
+    <rect x='0.00' y='0.00' width='445.86' height='504.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0NDUuODZ8MC4wMHw1MDQuMDA=)'>
+<text x='251.73' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+</g>
+</svg>
diff --git a/inst/tinytest/_tinysnapshot/par_restore_bottom.svg b/inst/tinytest/_tinysnapshot/par_restore_bottom.svg
index ab9af457..c346ceae 100644
--- a/inst/tinytest/_tinysnapshot/par_restore_bottom.svg
+++ b/inst/tinytest/_tinysnapshot/par_restore_bottom.svg
@@ -21,224 +21,224 @@
   </clipPath>
 </defs>
 <g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
-<rect x='154.26' y='458.56' width='224.27' height='44.28' style='stroke-width: 0.75; fill: #FFFFFF;' />
-<circle cx='165.06' cy='488.08' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='238.02' cy='488.08' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='310.98' cy='488.08' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<text x='266.40' y='473.32' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='42.70px' lengthAdjust='spacingAndGlyphs'>Species</text>
-<text x='175.86' y='492.21' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='35.37px' lengthAdjust='spacingAndGlyphs'>setosa</text>
-<text x='248.82' y='492.21' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='51.36px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
-<text x='321.78' y='492.21' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='44.02px' lengthAdjust='spacingAndGlyphs'>virginica</text>
-<line x1='95.73' y1='398.41' x2='469.07' y2='398.41' style='stroke-width: 0.75;' />
-<line x1='95.73' y1='398.41' x2='95.73' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='149.07' y1='398.41' x2='149.07' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='202.40' y1='398.41' x2='202.40' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='255.73' y1='398.41' x2='255.73' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='309.07' y1='398.41' x2='309.07' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='362.40' y1='398.41' x2='362.40' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='415.73' y1='398.41' x2='415.73' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='469.07' y1='398.41' x2='469.07' y2='405.61' style='stroke-width: 0.75;' />
-<text x='95.73' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>4.5</text>
-<text x='149.07' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>5.0</text>
-<text x='202.40' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>5.5</text>
-<text x='255.73' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>6.0</text>
-<text x='309.07' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>6.5</text>
-<text x='362.40' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>7.0</text>
-<text x='415.73' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>7.5</text>
-<text x='469.07' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>8.0</text>
-<line x1='59.04' y1='385.84' x2='59.04' y2='123.98' style='stroke-width: 0.75;' />
-<line x1='59.04' y1='385.84' x2='51.84' y2='385.84' style='stroke-width: 0.75;' />
-<line x1='59.04' y1='320.38' x2='51.84' y2='320.38' style='stroke-width: 0.75;' />
-<line x1='59.04' y1='254.91' x2='51.84' y2='254.91' style='stroke-width: 0.75;' />
-<line x1='59.04' y1='189.45' x2='51.84' y2='189.45' style='stroke-width: 0.75;' />
-<line x1='59.04' y1='123.98' x2='51.84' y2='123.98' style='stroke-width: 0.75;' />
-<text transform='translate(41.76,385.84) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>2.0</text>
-<text transform='translate(41.76,320.38) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>2.5</text>
-<text transform='translate(41.76,254.91) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>3.0</text>
-<text transform='translate(41.76,189.45) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>3.5</text>
-<text transform='translate(41.76,123.98) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>4.0</text>
-<polygon points='59.04,398.41 473.76,398.41 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+<rect x='154.26' y='453.66' width='224.27' height='44.89' style='stroke-width: 0.75; fill: #FFFFFF;' />
+<circle cx='165.06' cy='483.59' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='238.02' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='310.98' cy='483.59' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<text x='266.40' y='468.62' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='42.70px' lengthAdjust='spacingAndGlyphs'>Species</text>
+<text x='175.86' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='35.37px' lengthAdjust='spacingAndGlyphs'>setosa</text>
+<text x='248.82' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='51.36px' lengthAdjust='spacingAndGlyphs'>versicolor</text>
+<text x='321.78' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='44.02px' lengthAdjust='spacingAndGlyphs'>virginica</text>
+<line x1='95.73' y1='382.34' x2='469.07' y2='382.34' style='stroke-width: 0.75;' />
+<line x1='95.73' y1='382.34' x2='95.73' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='149.07' y1='382.34' x2='149.07' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='202.40' y1='382.34' x2='202.40' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='255.73' y1='382.34' x2='255.73' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='309.07' y1='382.34' x2='309.07' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='362.40' y1='382.34' x2='362.40' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='415.73' y1='382.34' x2='415.73' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='469.07' y1='382.34' x2='469.07' y2='389.54' style='stroke-width: 0.75;' />
+<text x='95.73' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>4.5</text>
+<text x='149.07' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>5.0</text>
+<text x='202.40' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>5.5</text>
+<text x='255.73' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>6.0</text>
+<text x='309.07' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>6.5</text>
+<text x='362.40' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>7.0</text>
+<text x='415.73' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>7.5</text>
+<text x='469.07' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>8.0</text>
+<line x1='59.04' y1='370.36' x2='59.04' y2='120.91' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='370.36' x2='51.84' y2='370.36' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='308.00' x2='51.84' y2='308.00' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='245.63' x2='51.84' y2='245.63' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='183.27' x2='51.84' y2='183.27' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='120.91' x2='51.84' y2='120.91' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,370.36) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>2.0</text>
+<text transform='translate(41.76,308.00) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>2.5</text>
+<text transform='translate(41.76,245.63) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>3.0</text>
+<text transform='translate(41.76,183.27) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>3.5</text>
+<text transform='translate(41.76,120.91) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='16.68px' lengthAdjust='spacingAndGlyphs'>4.0</text>
+<polygon points='59.04,382.34 473.76,382.34 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
 </g>
 <defs>
-  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM5OC40MQ=='>
-    <rect x='59.04' y='59.04' width='414.72' height='339.37' />
+  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA=='>
+    <rect x='59.04' y='59.04' width='414.72' height='323.30' />
   </clipPath>
 </defs>
-<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM5OC40MQ==)'>
-<line x1='95.73' y1='398.41' x2='95.73' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='149.07' y1='398.41' x2='149.07' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='202.40' y1='398.41' x2='202.40' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='255.73' y1='398.41' x2='255.73' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='309.07' y1='398.41' x2='309.07' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='362.40' y1='398.41' x2='362.40' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='415.73' y1='398.41' x2='415.73' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='469.07' y1='398.41' x2='469.07' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='59.04' y1='385.84' x2='473.76' y2='385.84' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='59.04' y1='320.38' x2='473.76' y2='320.38' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='59.04' y1='254.91' x2='473.76' y2='254.91' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='59.04' y1='189.45' x2='473.76' y2='189.45' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<line x1='59.04' y1='123.98' x2='473.76' y2='123.98' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
-<circle cx='159.73' cy='189.45' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='138.40' cy='254.91' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='117.07' cy='228.73' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='106.40' cy='241.82' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='149.07' cy='176.35' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='191.73' cy='137.07' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='106.40' cy='202.54' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='149.07' cy='202.54' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='85.07' cy='268.00' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='138.40' cy='241.82' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='191.73' cy='163.26' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='127.73' cy='202.54' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='127.73' cy='254.91' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='74.40' cy='254.91' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='234.40' cy='123.98' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='223.73' cy='71.61' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='191.73' cy='137.07' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='159.73' cy='189.45' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='223.73' cy='150.17' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='159.73' cy='150.17' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='191.73' cy='202.54' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='159.73' cy='163.26' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='106.40' cy='176.35' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='159.73' cy='215.63' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='127.73' cy='202.54' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='149.07' cy='254.91' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='149.07' cy='202.54' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='170.40' cy='189.45' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='170.40' cy='202.54' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='117.07' cy='228.73' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='127.73' cy='241.82' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='191.73' cy='202.54' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='170.40' cy='110.89' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='202.40' cy='97.80' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='138.40' cy='241.82' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='149.07' cy='228.73' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='202.40' cy='189.45' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='138.40' cy='176.35' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='85.07' cy='254.91' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='159.73' cy='202.54' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='149.07' cy='189.45' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='95.73' cy='346.56' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='85.07' cy='228.73' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='149.07' cy='189.45' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='159.73' cy='150.17' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='127.73' cy='254.91' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='159.73' cy='150.17' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='106.40' cy='228.73' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='181.07' cy='163.26' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='149.07' cy='215.63' r='2.70' style='stroke-width: 0.75;' />
-<circle cx='362.40' cy='228.73' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='298.40' cy='228.73' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='351.73' cy='241.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='202.40' cy='346.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='309.07' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='223.73' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='287.73' cy='215.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='138.40' cy='333.47' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='319.73' cy='268.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='170.40' cy='294.19' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='149.07' cy='385.84' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='245.07' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='255.73' cy='359.66' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='266.40' cy='268.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='213.07' cy='268.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='330.40' cy='241.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='213.07' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='234.40' cy='294.19' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='277.07' cy='359.66' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='213.07' cy='320.38' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='245.07' cy='228.73' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='266.40' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='287.73' cy='320.38' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='266.40' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='298.40' cy='268.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='319.73' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='341.07' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='330.40' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='255.73' cy='268.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='223.73' cy='307.28' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='202.40' cy='333.47' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='202.40' cy='333.47' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='234.40' cy='294.19' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='255.73' cy='294.19' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='191.73' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='255.73' cy='202.54' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='330.40' cy='241.82' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='287.73' cy='346.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='213.07' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='202.40' cy='320.38' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='202.40' cy='307.28' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='266.40' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='234.40' cy='307.28' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='149.07' cy='346.56' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='213.07' cy='294.19' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='223.73' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='223.73' cy='268.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='277.07' cy='268.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='159.73' cy='320.38' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='223.73' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
-<circle cx='287.73' cy='215.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='234.40' cy='294.19' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='373.07' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='287.73' cy='268.00' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='309.07' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='426.40' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='138.40' cy='320.38' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='394.40' cy='268.00' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='330.40' cy='320.38' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='383.73' cy='176.35' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='309.07' cy='228.73' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='298.40' cy='294.19' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='341.07' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='223.73' cy='320.38' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='234.40' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='298.40' cy='228.73' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='309.07' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='437.07' cy='150.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='437.07' cy='307.28' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='255.73' cy='359.66' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='351.73' cy='228.73' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='213.07' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='437.07' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='287.73' cy='294.19' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='330.40' cy='215.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='383.73' cy='228.73' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='277.07' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='266.40' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='298.40' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='383.73' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='405.07' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='458.40' cy='150.17' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='298.40' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='287.73' cy='281.10' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='266.40' cy='307.28' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='437.07' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='287.73' cy='202.54' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='298.40' cy='241.82' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='255.73' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='351.73' cy='241.82' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='330.40' cy='241.82' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='351.73' cy='241.82' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='234.40' cy='294.19' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='341.07' cy='228.73' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='330.40' cy='215.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='330.40' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='287.73' cy='320.38' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='309.07' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='277.07' cy='202.54' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
-<circle cx='245.07' cy='254.91' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA==)'>
+<line x1='95.73' y1='382.34' x2='95.73' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='149.07' y1='382.34' x2='149.07' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='202.40' y1='382.34' x2='202.40' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='255.73' y1='382.34' x2='255.73' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='309.07' y1='382.34' x2='309.07' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='362.40' y1='382.34' x2='362.40' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='415.73' y1='382.34' x2='415.73' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='469.07' y1='382.34' x2='469.07' y2='59.04' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='59.04' y1='370.36' x2='473.76' y2='370.36' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='59.04' y1='308.00' x2='473.76' y2='308.00' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='59.04' y1='245.63' x2='473.76' y2='245.63' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='59.04' y1='183.27' x2='473.76' y2='183.27' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<line x1='59.04' y1='120.91' x2='473.76' y2='120.91' style='stroke-width: 0.75; stroke: #D3D3D3; stroke-dasharray: 1.00,3.00;' />
+<circle cx='159.73' cy='183.27' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='245.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='117.07' cy='220.69' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='106.40' cy='233.16' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='149.07' cy='170.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='191.73' cy='133.38' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='106.40' cy='195.74' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='149.07' cy='195.74' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='85.07' cy='258.11' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='233.16' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='191.73' cy='158.32' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='127.73' cy='195.74' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='127.73' cy='245.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='74.40' cy='245.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='234.40' cy='120.91' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='223.73' cy='71.01' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='191.73' cy='133.38' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='159.73' cy='183.27' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='223.73' cy='145.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='159.73' cy='145.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='191.73' cy='195.74' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='159.73' cy='158.32' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='106.40' cy='170.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='159.73' cy='208.22' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='127.73' cy='195.74' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='149.07' cy='245.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='149.07' cy='195.74' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='170.40' cy='183.27' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='170.40' cy='195.74' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='117.07' cy='220.69' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='127.73' cy='233.16' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='191.73' cy='195.74' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='170.40' cy='108.43' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='202.40' cy='95.96' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='233.16' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='149.07' cy='220.69' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='202.40' cy='183.27' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='138.40' cy='170.80' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='85.07' cy='245.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='159.73' cy='195.74' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='149.07' cy='183.27' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='95.73' cy='332.94' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='85.07' cy='220.69' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='149.07' cy='183.27' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='159.73' cy='145.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='127.73' cy='245.63' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='159.73' cy='145.85' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='106.40' cy='220.69' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='181.07' cy='158.32' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='149.07' cy='208.22' r='2.70' style='stroke-width: 0.75;' />
+<circle cx='362.40' cy='220.69' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='298.40' cy='220.69' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='351.73' cy='233.16' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='332.94' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='309.07' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='223.73' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='287.73' cy='208.22' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='138.40' cy='320.47' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='319.73' cy='258.11' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='170.40' cy='283.05' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='149.07' cy='370.36' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='245.07' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='255.73' cy='345.42' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='258.11' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='213.07' cy='258.11' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='233.16' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='213.07' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='234.40' cy='283.05' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='277.07' cy='345.42' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='213.07' cy='308.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='245.07' cy='220.69' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='287.73' cy='308.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='298.40' cy='258.11' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='319.73' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='341.07' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='255.73' cy='258.11' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='223.73' cy='295.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='320.47' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='320.47' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='234.40' cy='283.05' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='255.73' cy='283.05' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='191.73' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='255.73' cy='195.74' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='330.40' cy='233.16' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='287.73' cy='332.94' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='213.07' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='308.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='202.40' cy='295.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='266.40' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='234.40' cy='295.53' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='149.07' cy='332.94' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='213.07' cy='283.05' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='223.73' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='223.73' cy='258.11' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='277.07' cy='258.11' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='159.73' cy='308.00' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='223.73' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #DF536B;' />
+<circle cx='287.73' cy='208.22' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='234.40' cy='283.05' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='373.07' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='287.73' cy='258.11' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='309.07' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='426.40' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='138.40' cy='308.00' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='394.40' cy='258.11' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='308.00' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='383.73' cy='170.80' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='309.07' cy='220.69' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='298.40' cy='283.05' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='341.07' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='223.73' cy='308.00' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='234.40' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='298.40' cy='220.69' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='309.07' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='437.07' cy='145.85' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='437.07' cy='295.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='255.73' cy='345.42' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='351.73' cy='220.69' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='213.07' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='437.07' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='287.73' cy='283.05' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='208.22' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='383.73' cy='220.69' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='277.07' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.40' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='298.40' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='383.73' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='405.07' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='458.40' cy='145.85' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='298.40' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='287.73' cy='270.58' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='266.40' cy='295.53' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='437.07' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='287.73' cy='195.74' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='298.40' cy='233.16' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='255.73' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='351.73' cy='233.16' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='233.16' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='351.73' cy='233.16' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='234.40' cy='283.05' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='341.07' cy='220.69' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='208.22' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='330.40' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='287.73' cy='308.00' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='309.07' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='277.07' cy='195.74' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
+<circle cx='245.07' cy='245.63' r='2.70' style='stroke-width: 0.75; stroke: #61D04F;' />
 </g>
 <defs>
-  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NzEuODU='>
-    <rect x='0.00' y='0.00' width='504.00' height='471.85' />
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg='>
+    <rect x='0.00' y='0.00' width='504.00' height='455.78' />
   </clipPath>
 </defs>
-<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NzEuODU=)'>
-<text x='266.40' y='453.13' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='70.73px' lengthAdjust='spacingAndGlyphs'>Sepal.Length</text>
-<text transform='translate(12.96,228.73) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='64.70px' lengthAdjust='spacingAndGlyphs'>Sepal.Width</text>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg=)'>
+<text x='266.40' y='437.06' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='70.73px' lengthAdjust='spacingAndGlyphs'>Sepal.Length</text>
+<text transform='translate(12.96,220.69) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='64.70px' lengthAdjust='spacingAndGlyphs'>Sepal.Width</text>
 </g>
-<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM5OC40MQ==)'>
-<polygon points='255.73,248.61 261.19,258.06 250.28,258.06 ' style='stroke-width: 0.75; stroke: none; fill: #FF69B4;' />
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA==)'>
+<polygon points='255.73,239.34 261.19,248.78 250.28,248.78 ' style='stroke-width: 0.75; stroke: none; fill: #FF69B4;' />
 </g>
 </svg>
diff --git a/inst/tinytest/_tinysnapshot/readme_density_topright.svg b/inst/tinytest/_tinysnapshot/readme_density_topright.svg
index c5d80f1c..34e4b99c 100644
--- a/inst/tinytest/_tinysnapshot/readme_density_topright.svg
+++ b/inst/tinytest/_tinysnapshot/readme_density_topright.svg
@@ -72,7 +72,7 @@
 <polyline points='121.65,416.73 122.25,416.70 122.86,416.67 123.47,416.63 124.07,416.59 124.68,416.54 125.28,416.50 125.89,416.44 126.50,416.38 127.10,416.32 127.71,416.25 128.32,416.18 128.92,416.10 129.53,416.01 130.13,415.92 130.74,415.82 131.35,415.70 131.95,415.59 132.56,415.46 133.17,415.32 133.77,415.18 134.38,415.02 134.98,414.85 135.59,414.67 136.20,414.48 136.80,414.27 137.41,414.05 138.01,413.82 138.62,413.58 139.23,413.31 139.83,413.04 140.44,412.74 141.05,412.43 141.65,412.10 142.26,411.76 142.86,411.39 143.47,411.01 144.08,410.61 144.68,410.18 145.29,409.74 145.89,409.27 146.50,408.79 147.11,408.28 147.71,407.75 148.32,407.20 148.93,406.62 149.53,406.03 150.14,405.41 150.74,404.77 151.35,404.11 151.96,403.42 152.56,402.71 153.17,401.98 153.78,401.23 154.38,400.45 154.99,399.65 155.59,398.84 156.20,397.99 156.81,397.13 157.41,396.26 158.02,395.35 158.62,394.44 159.23,393.50 159.84,392.55 160.44,391.57 161.05,390.59 161.66,389.59 162.26,388.57 162.87,387.54 163.47,386.50 164.08,385.44 164.69,384.37 165.29,383.29 165.90,382.20 166.50,381.10 167.11,379.99 167.72,378.87 168.32,377.75 168.93,376.62 169.54,375.48 170.14,374.34 170.75,373.19 171.35,372.03 171.96,370.87 172.57,369.70 173.17,368.53 173.78,367.35 174.38,366.17 174.99,364.99 175.60,363.79 176.20,362.59 176.81,361.39 177.42,360.18 178.02,358.96 178.63,357.74 179.23,356.51 179.84,355.27 180.45,354.02 181.05,352.77 181.66,351.50 182.27,350.22 182.87,348.93 183.48,347.63 184.08,346.31 184.69,344.98 185.30,343.64 185.90,342.28 186.51,340.91 187.11,339.52 187.72,338.12 188.33,336.70 188.93,335.26 189.54,333.81 190.15,332.34 190.75,330.85 191.36,329.34 191.96,327.82 192.57,326.29 193.18,324.73 193.78,323.17 194.39,321.58 194.99,319.99 195.60,318.38 196.21,316.76 196.81,315.13 197.42,313.49 198.03,311.85 198.63,310.20 199.24,308.55 199.84,306.89 200.45,305.23 201.06,303.58 201.66,301.93 202.27,300.28 202.87,298.65 203.48,297.02 204.09,295.41 204.69,293.81 205.30,292.23 205.91,290.67 206.51,289.13 207.12,287.61 207.72,286.13 208.33,284.67 208.94,283.24 209.54,281.84 210.15,280.48 210.76,279.16 211.36,277.86 211.97,276.62 212.57,275.42 213.18,274.24 213.79,273.13 214.39,272.06 215.00,271.02 215.60,270.04 216.21,269.11 216.82,268.21 217.42,267.37 218.03,266.57 218.64,265.82 219.24,265.11 219.85,264.45 220.45,263.83 221.06,263.25 221.67,262.73 222.27,262.23 222.88,261.77 223.48,261.35 224.09,260.96 224.70,260.60 225.30,260.28 225.91,259.98 226.52,259.70 227.12,259.44 227.73,259.20 228.33,258.98 228.94,258.77 229.55,258.56 230.15,258.36 230.76,258.17 231.36,257.97 231.97,257.76 232.58,257.55 233.18,257.33 233.79,257.10 234.40,256.85 235.00,256.58 235.61,256.28 236.21,255.97 236.82,255.62 237.43,255.25 238.03,254.85 238.64,254.41 239.25,253.94 239.85,253.44 240.46,252.90 241.06,252.32 241.67,251.70 242.28,251.05 242.88,250.36 243.49,249.63 244.09,248.87 244.70,248.07 245.31,247.24 245.91,246.38 246.52,245.48 247.13,244.56 247.73,243.62 248.34,242.64 248.94,241.65 249.55,240.64 250.16,239.61 250.76,238.58 251.37,237.54 251.97,236.50 252.58,235.45 253.19,234.41 253.79,233.38 254.40,232.37 255.01,231.37 255.61,230.39 256.22,229.44 256.82,228.52 257.43,227.62 258.04,226.78 258.64,225.96 259.25,225.19 259.85,224.48 260.46,223.82 261.07,223.20 261.67,222.66 262.28,222.17 262.89,221.73 263.49,221.38 264.10,221.09 264.70,220.86 265.31,220.71 265.92,220.64 266.52,220.63 267.13,220.70 267.74,220.85 268.34,221.07 268.95,221.35 269.55,221.74 270.16,222.18 270.77,222.68 271.37,223.29 271.98,223.95 272.58,224.66 273.19,225.47 273.80,226.34 274.40,227.26 275.01,228.25 275.62,229.30 276.22,230.40 276.83,231.56 277.43,232.78 278.04,234.04 278.65,235.34 279.25,236.70 279.86,238.10 280.46,239.52 281.07,241.00 281.68,242.51 282.28,244.04 282.89,245.61 283.50,247.20 284.10,248.81 284.71,250.45 285.31,252.11 285.92,253.79 286.53,255.48 287.13,257.19 287.74,258.91 288.34,260.64 288.95,262.39 289.56,264.14 290.16,265.89 290.77,267.66 291.38,269.43 291.98,271.20 292.59,272.98 293.19,274.76 293.80,276.54 294.41,278.32 295.01,280.11 295.62,281.89 296.23,283.67 296.83,285.46 297.44,287.24 298.04,289.02 298.65,290.79 299.26,292.57 299.86,294.34 300.47,296.11 301.07,297.88 301.68,299.64 302.29,301.40 302.89,303.15 303.50,304.90 304.11,306.64 304.71,308.37 305.32,310.10 305.92,311.81 306.53,313.52 307.14,315.23 307.74,316.91 308.35,318.59 308.95,320.26 309.56,321.91 310.17,323.55 310.77,325.17 311.38,326.78 311.99,328.37 312.59,329.94 313.20,331.50 313.80,333.03 314.41,334.54 315.02,336.04 315.62,337.50 316.23,338.94 316.83,340.37 317.44,341.76 318.05,343.12 318.65,344.46 319.26,345.77 319.87,347.05 320.47,348.30 321.08,349.51 321.68,350.70 322.29,351.85 322.90,352.97 323.50,354.05 324.11,355.10 324.72,356.12 325.32,357.09 325.93,358.03 326.53,358.94 327.14,359.79 327.75,360.62 328.35,361.41 328.96,362.15 329.56,362.85 330.17,363.53 330.78,364.14 331.38,364.73 331.99,365.27 332.60,365.77 333.20,366.22 333.81,366.65 334.41,367.02 335.02,367.34 335.63,367.63 336.23,367.88 336.84,368.07 337.44,368.23 338.05,368.35 338.66,368.41 339.26,368.43 339.87,368.42 340.48,368.35 341.08,368.24 341.69,368.10 342.29,367.91 342.90,367.67 343.51,367.40 344.11,367.09 344.72,366.73 345.32,366.34 345.93,365.90 346.54,365.43 347.14,364.92 347.75,364.38 348.36,363.80 348.96,363.19 349.57,362.56 350.17,361.88 350.78,361.19 351.39,360.47 351.99,359.72 352.60,358.95 353.21,358.17 353.81,357.37 354.42,356.56 355.02,355.73 355.63,354.90 356.24,354.06 356.84,353.22 357.45,352.38 358.05,351.55 358.66,350.72 359.27,349.90 359.87,349.10 360.48,348.32 361.09,347.55 361.69,346.81 362.30,346.09 362.90,345.40 363.51,344.75 364.12,344.13 364.72,343.54 365.33,343.01 365.93,342.52 366.54,342.07 367.15,341.68 367.75,341.34 368.36,341.04 368.97,340.81 369.57,340.64 370.18,340.52 370.78,340.47 371.39,340.49 372.00,340.56 372.60,340.68 373.21,340.90 373.81,341.17 374.42,341.49 375.03,341.90 375.63,342.37 376.24,342.89 376.85,343.49 377.45,344.15 378.06,344.86 378.66,345.65 379.27,346.49 379.88,347.38 380.48,348.33 381.09,349.34 381.70,350.39 382.30,351.49 382.91,352.64 383.51,353.83 384.12,355.05 384.73,356.32 385.33,357.62 385.94,358.95 386.54,360.31 387.15,361.69 387.76,363.09 388.36,364.52 388.97,365.96 389.58,367.40 390.18,368.86 390.79,370.33 391.39,371.79 392.00,373.26 392.61,374.72 393.21,376.17 393.82,377.62 394.42,379.05 395.03,380.48 395.64,381.88 396.24,383.27 396.85,384.63 397.46,385.98 398.06,387.30 398.67,388.59 399.27,389.86 399.88,391.09 400.49,392.30 401.09,393.48 401.70,394.62 402.30,395.73 402.91,396.81 403.52,397.85 404.12,398.86 404.73,399.84 405.34,400.78 405.94,401.68 406.55,402.55 407.15,403.39 407.76,404.19 408.37,404.95 408.97,405.69 409.58,406.39 410.19,407.05 410.79,407.70 411.40,408.30 412.00,408.87 412.61,409.42 413.22,409.93 413.82,410.42 414.43,410.88 415.03,411.32 415.64,411.72 416.25,412.11 416.85,412.48 417.46,412.81 418.07,413.13 418.67,413.44 419.28,413.71 419.88,413.97 420.49,414.22 421.10,414.44 421.70,414.65 422.31,414.85 422.91,415.03 423.52,415.20 424.13,415.36 424.73,415.50 425.34,415.64 425.95,415.76 426.55,415.87 427.16,415.98 427.76,416.07 428.37,416.16 428.98,416.24 429.58,416.31 430.19,416.38 430.79,416.44 431.40,416.50 ' style='stroke-width: 0.75; stroke: #28E2E5;' />
 </g>
 <g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
-<text x='266.40' y='34.47' text-anchor='middle' style='font-size: 14.40px; font-weight: bold; font-family: "Liberation Sans";' textLength='243.81px' lengthAdjust='spacingAndGlyphs'>density.default(x = airquality$Temp)</text>
+<text x='266.40' y='34.47' text-anchor='middle' style='font-size: 14.40px; font-weight: bold; font-family: "Liberation Sans";' textLength='171.81px' lengthAdjust='spacingAndGlyphs'>density.default(x = Temp)</text>
 <text x='266.40' y='485.28' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='237.51px' lengthAdjust='spacingAndGlyphs'>N = [31, 30, 31, ...]   Joint Bandwidth = 2.649</text>
 <text transform='translate(12.96,244.80) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='40.02px' lengthAdjust='spacingAndGlyphs'>Density</text>
 </g>
diff --git a/inst/tinytest/_tinysnapshot/readme_legend_bottom.svg b/inst/tinytest/_tinysnapshot/readme_legend_bottom.svg
index 4548b005..e9810e73 100644
--- a/inst/tinytest/_tinysnapshot/readme_legend_bottom.svg
+++ b/inst/tinytest/_tinysnapshot/readme_legend_bottom.svg
@@ -21,63 +21,63 @@
   </clipPath>
 </defs>
 <g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw1MDQuMDA=)'>
-<rect x='139.01' y='458.56' width='254.77' height='44.28' style='stroke-width: 0.75; fill: #FFFFFF;' />
-<line x1='149.81' y1='488.08' x2='171.41' y2='488.08' style='stroke-width: 0.75;' />
-<line x1='199.69' y1='488.08' x2='221.29' y2='488.08' style='stroke-width: 0.75; stroke: #DF536B;' />
-<line x1='249.56' y1='488.08' x2='271.16' y2='488.08' style='stroke-width: 0.75; stroke: #61D04F;' />
-<line x1='299.44' y1='488.08' x2='321.04' y2='488.08' style='stroke-width: 0.75; stroke: #2297E6;' />
-<line x1='349.31' y1='488.08' x2='370.91' y2='488.08' style='stroke-width: 0.75; stroke: #28E2E5;' />
-<text x='266.40' y='473.32' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='93.40px' lengthAdjust='spacingAndGlyphs'>Month of the year</text>
-<text x='182.21' y='492.21' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
-<text x='232.09' y='492.21' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
-<text x='281.96' y='492.21' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
-<text x='331.84' y='492.21' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
-<text x='381.71' y='492.21' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
-<line x1='61.60' y1='398.41' x2='445.60' y2='398.41' style='stroke-width: 0.75;' />
-<line x1='61.60' y1='398.41' x2='61.60' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='125.60' y1='398.41' x2='125.60' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='189.60' y1='398.41' x2='189.60' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='253.60' y1='398.41' x2='253.60' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='317.60' y1='398.41' x2='317.60' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='381.60' y1='398.41' x2='381.60' y2='405.61' style='stroke-width: 0.75;' />
-<line x1='445.60' y1='398.41' x2='445.60' y2='405.61' style='stroke-width: 0.75;' />
-<text x='61.60' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
-<text x='125.60' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
-<text x='189.60' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
-<text x='253.60' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
-<text x='317.60' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
-<text x='381.60' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
-<text x='445.60' y='424.33' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
-<line x1='59.04' y1='355.19' x2='59.04' y2='125.26' style='stroke-width: 0.75;' />
-<line x1='59.04' y1='355.19' x2='51.84' y2='355.19' style='stroke-width: 0.75;' />
-<line x1='59.04' y1='278.54' x2='51.84' y2='278.54' style='stroke-width: 0.75;' />
-<line x1='59.04' y1='201.90' x2='51.84' y2='201.90' style='stroke-width: 0.75;' />
-<line x1='59.04' y1='125.26' x2='51.84' y2='125.26' style='stroke-width: 0.75;' />
-<text transform='translate(41.76,355.19) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
-<text transform='translate(41.76,278.54) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
-<text transform='translate(41.76,201.90) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
-<text transform='translate(41.76,125.26) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
-<polygon points='59.04,398.41 473.76,398.41 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
+<rect x='139.01' y='453.66' width='254.77' height='44.89' style='stroke-width: 0.75; fill: #FFFFFF;' />
+<line x1='149.81' y1='483.59' x2='171.41' y2='483.59' style='stroke-width: 0.75;' />
+<line x1='199.69' y1='483.59' x2='221.29' y2='483.59' style='stroke-width: 0.75; stroke: #DF536B;' />
+<line x1='249.56' y1='483.59' x2='271.16' y2='483.59' style='stroke-width: 0.75; stroke: #61D04F;' />
+<line x1='299.44' y1='483.59' x2='321.04' y2='483.59' style='stroke-width: 0.75; stroke: #2297E6;' />
+<line x1='349.31' y1='483.59' x2='370.91' y2='483.59' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<text x='266.40' y='468.62' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='93.40px' lengthAdjust='spacingAndGlyphs'>Month of the year</text>
+<text x='182.21' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='232.09' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>6</text>
+<text x='281.96' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>7</text>
+<text x='331.84' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>8</text>
+<text x='381.71' y='487.71' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>9</text>
+<line x1='61.60' y1='382.34' x2='445.60' y2='382.34' style='stroke-width: 0.75;' />
+<line x1='61.60' y1='382.34' x2='61.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='125.60' y1='382.34' x2='125.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='189.60' y1='382.34' x2='189.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='253.60' y1='382.34' x2='253.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='317.60' y1='382.34' x2='317.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='381.60' y1='382.34' x2='381.60' y2='389.54' style='stroke-width: 0.75;' />
+<line x1='445.60' y1='382.34' x2='445.60' y2='389.54' style='stroke-width: 0.75;' />
+<text x='61.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>0</text>
+<text x='125.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='6.67px' lengthAdjust='spacingAndGlyphs'>5</text>
+<text x='189.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>10</text>
+<text x='253.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>15</text>
+<text x='317.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>20</text>
+<text x='381.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>25</text>
+<text x='445.60' y='408.26' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>30</text>
+<line x1='59.04' y1='341.16' x2='59.04' y2='122.12' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='341.16' x2='51.84' y2='341.16' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='268.15' x2='51.84' y2='268.15' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='195.13' x2='51.84' y2='195.13' style='stroke-width: 0.75;' />
+<line x1='59.04' y1='122.12' x2='51.84' y2='122.12' style='stroke-width: 0.75;' />
+<text transform='translate(41.76,341.16) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>60</text>
+<text transform='translate(41.76,268.15) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>70</text>
+<text transform='translate(41.76,195.13) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>80</text>
+<text transform='translate(41.76,122.12) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>90</text>
+<polygon points='59.04,382.34 473.76,382.34 473.76,59.04 59.04,59.04 ' style='stroke-width: 0.75;' />
 </g>
 <defs>
-  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM5OC40MQ=='>
-    <rect x='59.04' y='59.04' width='414.72' height='339.37' />
+  <clipPath id='cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA=='>
+    <rect x='59.04' y='59.04' width='414.72' height='323.30' />
   </clipPath>
 </defs>
-<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM5OC40MQ==)'>
-<polyline points='74.40,301.54 87.20,263.21 100.00,247.89 112.80,339.86 125.60,385.84 138.40,309.20 151.20,316.86 164.00,362.85 176.80,347.52 189.60,286.21 202.40,247.89 215.20,286.21 228.00,309.20 240.80,293.87 253.60,370.51 266.40,324.53 279.20,309.20 292.00,378.18 304.80,293.87 317.60,339.86 330.40,362.85 343.20,255.55 356.00,347.52 368.80,347.52 381.60,378.18 394.40,370.51 407.20,378.18 420.00,301.54 432.80,194.24 445.60,209.57 458.40,232.56 ' style='stroke-width: 0.75;' />
-<polyline points='74.40,217.23 87.20,247.89 100.00,301.54 112.80,171.24 125.60,163.58 138.40,209.57 151.20,186.57 164.00,148.25 176.80,125.26 189.60,148.25 202.40,102.27 215.20,109.93 228.00,186.57 240.80,201.90 253.60,209.57 266.40,224.89 279.20,263.21 292.00,316.86 304.80,255.55 317.60,232.56 330.40,224.89 343.20,232.56 356.00,232.56 368.80,232.56 381.60,240.22 394.40,217.23 407.20,255.55 420.00,201.90 432.80,224.89 445.60,178.91 ' style='stroke-width: 0.75; stroke: #DF536B;' />
-<polyline points='74.40,171.24 87.20,163.58 100.00,194.24 112.80,171.24 125.60,178.91 138.40,178.91 151.20,140.59 164.00,109.93 176.80,109.93 189.60,132.92 202.40,186.57 215.20,255.55 228.00,194.24 240.80,117.59 253.60,201.90 266.40,194.24 279.20,186.57 292.00,171.24 304.80,148.25 317.60,163.58 330.40,247.89 343.20,194.24 356.00,186.57 368.80,155.92 381.60,163.58 394.40,186.57 407.20,155.92 420.00,140.59 432.80,155.92 445.60,178.91 458.40,194.24 ' style='stroke-width: 0.75; stroke: #61D04F;' />
-<polyline points='74.40,194.24 87.20,194.24 100.00,186.57 112.80,155.92 125.60,163.58 138.40,148.25 151.20,132.92 164.00,125.26 176.80,125.26 189.60,109.93 202.40,155.92 215.20,155.92 228.00,186.57 240.80,201.90 253.60,209.57 266.40,224.89 279.20,209.57 292.00,232.56 304.80,217.23 317.60,217.23 330.40,224.89 343.20,263.21 356.00,240.22 368.80,209.57 381.60,194.24 394.40,155.92 407.20,140.59 420.00,71.61 432.80,94.60 445.60,79.27 458.40,94.60 ' style='stroke-width: 0.75; stroke: #2297E6;' />
-<polyline points='74.40,117.59 87.20,109.93 100.00,102.27 112.80,102.27 125.60,148.25 138.40,171.24 151.20,201.90 164.00,217.23 176.80,240.22 189.60,255.55 202.40,194.24 215.20,232.56 228.00,224.89 240.80,270.88 253.60,270.88 266.40,217.23 279.20,301.54 292.00,232.56 304.80,293.87 317.60,186.57 330.40,324.53 343.20,270.88 356.00,194.24 368.80,286.21 381.60,332.19 394.40,278.54 407.20,224.89 420.00,240.22 432.80,232.56 445.60,293.87 ' style='stroke-width: 0.75; stroke: #28E2E5;' />
+<g clip-path='url(#cpNTkuMDR8NDczLjc2fDU5LjA0fDM4Mi4zNA==)'>
+<polyline points='74.40,290.05 87.20,253.54 100.00,238.94 112.80,326.56 125.60,370.36 138.40,297.35 151.20,304.65 164.00,348.46 176.80,333.86 189.60,275.45 202.40,238.94 215.20,275.45 228.00,297.35 240.80,282.75 253.60,355.76 266.40,311.95 279.20,297.35 292.00,363.06 304.80,282.75 317.60,326.56 330.40,348.46 343.20,246.24 356.00,333.86 368.80,333.86 381.60,363.06 394.40,355.76 407.20,363.06 420.00,290.05 432.80,187.83 445.60,202.44 458.40,224.34 ' style='stroke-width: 0.75;' />
+<polyline points='74.40,209.74 87.20,238.94 100.00,290.05 112.80,165.93 125.60,158.63 138.40,202.44 151.20,180.53 164.00,144.03 176.80,122.12 189.60,144.03 202.40,100.22 215.20,107.52 228.00,180.53 240.80,195.13 253.60,202.44 266.40,217.04 279.20,253.54 292.00,304.65 304.80,246.24 317.60,224.34 330.40,217.04 343.20,224.34 356.00,224.34 368.80,224.34 381.60,231.64 394.40,209.74 407.20,246.24 420.00,195.13 432.80,217.04 445.60,173.23 ' style='stroke-width: 0.75; stroke: #DF536B;' />
+<polyline points='74.40,165.93 87.20,158.63 100.00,187.83 112.80,165.93 125.60,173.23 138.40,173.23 151.20,136.72 164.00,107.52 176.80,107.52 189.60,129.42 202.40,180.53 215.20,246.24 228.00,187.83 240.80,114.82 253.60,195.13 266.40,187.83 279.20,180.53 292.00,165.93 304.80,144.03 317.60,158.63 330.40,238.94 343.20,187.83 356.00,180.53 368.80,151.33 381.60,158.63 394.40,180.53 407.20,151.33 420.00,136.72 432.80,151.33 445.60,173.23 458.40,187.83 ' style='stroke-width: 0.75; stroke: #61D04F;' />
+<polyline points='74.40,187.83 87.20,187.83 100.00,180.53 112.80,151.33 125.60,158.63 138.40,144.03 151.20,129.42 164.00,122.12 176.80,122.12 189.60,107.52 202.40,151.33 215.20,151.33 228.00,180.53 240.80,195.13 253.60,202.44 266.40,217.04 279.20,202.44 292.00,224.34 304.80,209.74 317.60,209.74 330.40,217.04 343.20,253.54 356.00,231.64 368.80,202.44 381.60,187.83 394.40,151.33 407.20,136.72 420.00,71.01 432.80,92.92 445.60,78.32 458.40,92.92 ' style='stroke-width: 0.75; stroke: #2297E6;' />
+<polyline points='74.40,114.82 87.20,107.52 100.00,100.22 112.80,100.22 125.60,144.03 138.40,165.93 151.20,195.13 164.00,209.74 176.80,231.64 189.60,246.24 202.40,187.83 215.20,224.34 228.00,217.04 240.80,260.84 253.60,260.84 266.40,209.74 279.20,290.05 292.00,224.34 304.80,282.75 317.60,180.53 330.40,311.95 343.20,260.84 356.00,187.83 368.80,275.45 381.60,319.25 394.40,268.15 407.20,217.04 420.00,231.64 432.80,224.34 445.60,282.75 ' style='stroke-width: 0.75; stroke: #28E2E5;' />
 </g>
 <defs>
-  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NzEuODU='>
-    <rect x='0.00' y='0.00' width='504.00' height='471.85' />
+  <clipPath id='cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg='>
+    <rect x='0.00' y='0.00' width='504.00' height='455.78' />
   </clipPath>
 </defs>
-<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NzEuODU=)'>
-<text x='266.40' y='453.13' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
-<text transform='translate(12.96,228.73) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
+<g clip-path='url(#cpMC4wMHw1MDQuMDB8MC4wMHw0NTUuNzg=)'>
+<text x='266.40' y='437.06' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Day</text>
+<text transform='translate(12.96,220.69) rotate(-90)' text-anchor='middle' style='font-size: 12.00px; font-family: "Liberation Sans";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>Temp</text>
 </g>
 </svg>
diff --git a/inst/tinytest/test-README.R b/inst/tinytest/test-README.R
index 288e9f3a..f174fcaa 100644
--- a/inst/tinytest/test-README.R
+++ b/inst/tinytest/test-README.R
@@ -72,19 +72,16 @@ f = function() {
     Temp ~ Day | Month,
     data = airquality,
     type = "l",
-    legend.position = "bottom!", # "right!" (default), "none", or "topleft", etc.
-    legend.args = list(title = "Month of the year", bty = "o")
+    legend = legend("bottom!", title = "Month of the year", bty = "o")
   )
 }
 expect_snapshot_plot(f, label = "readme_legend_bottom")
 
 if ((getRversion() <= "4.3.1")) {
   f = function() {
-    plot2(
-      density(airquality$Temp),
-      by = airquality$Month, 
-      legend.position = "topright",
-      legend.args = list(title = "Month", bty="o")
+    with(
+      airquality,
+      plot2(density(Temp), by = Month, legend = legend("topright", bty="o"))
     )
   }
   expect_snapshot_plot(f, label = "readme_density_topright")
diff --git a/inst/tinytest/test-legend.R b/inst/tinytest/test-legend.R
new file mode 100644
index 00000000..c0162235
--- /dev/null
+++ b/inst/tinytest/test-legend.R
@@ -0,0 +1,91 @@
+source("helpers.R")
+using("tinysnapshot")
+if (Sys.info()["sysname"] != "Linux") exit_file("Linux snapshots")
+
+op = par(no.readonly = TRUE)
+
+
+# logical legend example
+
+f = function() plot2(Temp ~ Day | Month, data = airquality, legend = FALSE)
+expect_snapshot_plot(f, label = "legend_false")
+
+f = function() plot2(Temp ~ Day | Month, data = airquality, legend = TRUE)
+expect_snapshot_plot(f, label = "legend_true")
+
+# position keyword examples 
+
+f = function() with(airquality, plot2(x = Day, y = Temp, by = Month, legend = "bottom!"))
+expect_snapshot_plot(f, label = "legend_keyword_default")
+
+if ((getRversion() <= "4.3.1")) {
+  f = function() with(airquality, plot2(x = density(Temp), by = Month, legend = "bottom!"))
+  expect_snapshot_plot(f, label = "legend_keyword_density")
+}
+
+f = function() plot2(Temp ~ Day | Month, data = airquality, legend = "bottom!")
+expect_snapshot_plot(f, label = "legend_keyword_formula")
+
+# test other outer keywords
+
+f = function() plot2(Temp ~ Day | Month, data = airquality, legend = "left!")
+expect_snapshot_plot(f, label = "legend_keyword_outerleft")
+f = function() plot2(Temp ~ Day | Month, data = airquality, legend = "bottom!")
+expect_snapshot_plot(f, label = "legend_keyword_outerbottom")
+f = function() plot2(Temp ~ Day | Month, data = airquality, legend = "top!")
+expect_snapshot_plot(f, label = "legend_keyword_outertop")
+f = function() plot2(Temp ~ Day | Month, data = airquality, legend = "topright!")
+expect_snapshot_plot(f, label = "legend_keyword_outertopright")
+f = function() plot2(Temp ~ Day | Month, data = airquality, legend = "bottomleft!")
+expect_snapshot_plot(f, label = "legend_keyword_outerbottomleft")
+
+
+# legend function examples
+
+f = function() with(
+  airquality,
+  plot2(
+    x = Day, y = Temp, by = Month,
+    legend = legend("bottom!", title = "Month of the year", bty = "o")
+    )
+  )
+expect_snapshot_plot(f, label = "legend_default_legend")
+
+if ((getRversion() <= "4.3.1")) {
+  f = function() with(
+    airquality,
+    plot2(
+      x = density(Temp), by = Month,
+      legend = legend("bottom!", title = "Month of the year", bty = "o")
+      )
+    )
+  expect_snapshot_plot(f, label = "legend_density_legend")
+}
+
+f = function() plot2(
+  Temp ~ Day | Month, data = airquality,
+  legend = legend("bottom!", title = "Month of the year", bty = "o")
+  )
+expect_snapshot_plot(f, label = "legend_formula_legend")
+
+f = function() plot2(
+  Temp ~ Day | Month, data = airquality,
+  legend = legend(title = NULL)
+  )
+expect_snapshot_plot(f, label = "legend_title_null")
+
+f = function() plot2(
+  Temp ~ Day | Month, data = airquality,
+  legend = legend(legend = month.abb[5:9])
+  )
+expect_snapshot_plot(f, label = "legend_user_labs")
+
+f = function() plot2(
+  Temp ~ Day | Month, data = airquality,
+  legend = legend(legend = month.abb[5:10])
+  )
+expect_warning(expect_snapshot_plot(f, label = "legend_user_labs_override"))
+
+
+# reset par
+par(op)
diff --git a/inst/tinytest/test-par_restore.R b/inst/tinytest/test-par_restore.R
index 8cdd466c..bcb16a93 100644
--- a/inst/tinytest/test-par_restore.R
+++ b/inst/tinytest/test-par_restore.R
@@ -7,7 +7,7 @@ f1 = function() {
   plot2(
     Sepal.Width ~ Sepal.Length | Species, iris,
     grid = grid(),
-    legend.position = "bottom!", legend.args = list(bty = "o")
+    legend = legend("bottom!", bty = "o")
   )
   points(6,3, pch = 17, col = "hotpink", cex = 1.5)
 }
@@ -18,7 +18,7 @@ f2 = function() {
     mpg ~ wt | cyl, mtcars,
     pch = 19,
     grid = grid(),
-    legend.position = "right!", legend.args = list(title = "How many cylnders do you have?")
+    legend = legend("right!", title = "How many cylnders do you have?")
   )
   lines(lowess(mtcars[["wt"]], mtcars[["mpg"]]))
   plot(1:10)
@@ -33,7 +33,7 @@ f3 = function() {
     mpg ~ wt | cyl, mtcars,
     pch = 19,
     grid = grid(),
-    legend.position = "right!", legend.args = list(title = "How many cylnders do you have?"),
+    legend = legend("right!", title = "How many cylnders do you have?"),
     par_restore = TRUE
   )
   lines(lowess(mtcars[["wt"]], mtcars[["mpg"]]))
diff --git a/man/figures/README-legend_bottom-1.png b/man/figures/README-legend_bottom-1.png
index 5f3908a3..90214b21 100644
Binary files a/man/figures/README-legend_bottom-1.png and b/man/figures/README-legend_bottom-1.png differ
diff --git a/man/plot2.Rd b/man/plot2.Rd
index 6dfcef86..262364d7 100644
--- a/man/plot2.Rd
+++ b/man/plot2.Rd
@@ -28,8 +28,7 @@ plot2(x, ...)
   asp = NA,
   grid = NULL,
   palette = NULL,
-  legend.position = NULL,
-  legend.args = list(),
+  legend = NULL,
   pch = NULL,
   col = NULL,
   lty = NULL,
@@ -54,8 +53,6 @@ plot2(x, ...)
   frame.plot = axes,
   asp = NA,
   grid = NULL,
-  legend.position = NULL,
-  legend.args = list(),
   pch = NULL,
   col = NULL,
   lty = NULL,
@@ -82,8 +79,6 @@ plot2(x, ...)
   frame.plot = axes,
   asp = NA,
   grid = NULL,
-  legend.position = NULL,
-  legend.args = list(),
   pch = NULL,
   col = NULL,
   lty = NULL,
@@ -164,14 +159,25 @@ unnamed arguments will be ignored and the key `n` argument, denoting the
 number of colours, will automatically be spliced in as the number of
 groups.}
 
-\item{legend.position}{one of the position keywords supported by `legend`.
-In addition, `plot2` supports adding an exclamation point to two keywords
-in particular: "bottom!" and "right!". These will place the legend outside
-of the plotting area and adjust the margins of the plot accordingly. If no
-legend is desired, then the user can also specify "none".}
-
-\item{legend.args}{list of additional arguments passed on to `legend`. At
-the moment, only "bty", "horiz", "xpd", and "title" are supported.}
+\item{legend}{one of the following options:
+- NULL (default), in which case the legend will be determined by the
+grouping variable. If there is no group variable (i.e., `by` is NULL) then
+no legend is drawn. If a grouping variable is detected, then an automatic
+legend is drawn to the _outer_ right of the plotting area. Note that the
+legend title and categories will automatically be inferred from the `by`
+argument and underlying data.
+- A convenience string indicating the legend position. The string should
+correspond to one of the position keywords supported by the base `legend`
+function, e.g. "right", "topleft", "bottom", etc. In addition, `plot2`
+supports adding a trailing exclamation point to these keywords, e.g.
+"right!", "topleft!", or "bottom!". This will place the legend _outside_
+the plotting area and adjust the margins of the plot accordingly. Finally,
+users can also turn off any legend printing by specifying "none".
+- Logical value, where TRUE corresponds to the default case above (same 
+effect as specifying NULL) and FALSE turns the legend off (same effect as
+specifying "none").
+- A list or, equivalently, a dedicated `legend()` function with supported
+legend arguments, e.g. "bty", "horiz", and so forth.}
 
 \item{pch}{plotting "character", i.e., symbol to use. Character, integer, or
 vector of length equal to the number of categories in the `by` variable.
@@ -262,7 +268,7 @@ plot2(
 )
 
 # The (automatic) legend position and look can be customized using
-# appropriate arguments. Note the trailing "!" in the `legend.position`
+# appropriate arguments. Note the trailing "!" in the `legend` position
 # argument below. This tells `plot2` to place the legend _outside_ the plot
 # area.
 
@@ -270,8 +276,7 @@ plot2(
   Temp ~ Day | Month,
   data = airquality,
   type = "l",
-  legend.position = "bottom!", # "right!" (default), "none", or "topleft", etc.
-  legend.args = list(title = "Month of the year", bty = "o")
+  legend = legend("bottom!", title = "Month of the year", bty = "o")
 )
 
 # Regular legend position keywords without the exclamation point (i.e., for
@@ -280,7 +285,7 @@ plot2(
 plot2(
   density(airquality$Temp),
   by = airquality$Month, 
-  legend.position = "topright", legend.args = list(bty="o", title = "Month")
+  legend = legend("topright", bty="o", title = "Month")
 )
 
 # The default group colours are inherited from either the "R4" or "Viridis"
