chiark / gitweb /
m.plots: update to work with matplotlib 3.5 as well.
authorVladimír Vondruš <mosra@centrum.cz>
Mon, 3 Jan 2022 18:21:22 +0000 (19:21 +0100)
committerVladimír Vondruš <mosra@centrum.cz>
Mon, 3 Jan 2022 19:04:18 +0000 (20:04 +0100)
The major change in 3.5 is that the attributes have a different order
and styles have more whitespace and less semicolons. To avoid explosion
of find/replace patterns, the search strings were converted to regexps
-- which on the other hand allowed me to drop some duplicates, and
discard the font name replacement altogether.

On the CI I'm now using the latest version on Python 3.8+, 3.7 stays on
3.4 to avoid regressions on that versions, and 3.6 on 3.3 which is also
a bit different.

documentation/test_python/page_plugins/plots-34.html [new file with mode: 0644]
documentation/test_python/page_plugins/plots.html
documentation/test_python/test_page.py
package/ci/circleci.yml
plugins/m/plots.py
plugins/m/test/plots/page-34.html [new file with mode: 0644]
plugins/m/test/plots/page.html
plugins/m/test/test_plots.py

diff --git a/documentation/test_python/page_plugins/plots-34.html b/documentation/test_python/page_plugins/plots-34.html
new file mode 100644 (file)
index 0000000..a0b54cf
--- /dev/null
@@ -0,0 +1,163 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <title>And now something totally different | My Python Project</title>
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+  <link rel="stylesheet" href="m-dark+documentation.compiled.css" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+  <div class="m-container">
+    <div class="m-row">
+      <a href="index.html" id="m-navbar-brand" class="m-col-t-8 m-col-m-none m-left-m">My Python Project</a>
+    </div>
+  </div>
+</nav></header>
+<main><article>
+  <div class="m-container m-container-inflatable">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <h1>
+          And now something totally different
+        </h1>
+<style>
+div.m-plot svg { font-family: DejaVu Sans; }
+</style><div class="m-plot">
+<svg viewBox="0 0 576 113.76">
+ <defs>
+  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+ </defs>
+ <g id="figure_1">
+  <g id="axes_1">
+   <g id="patch_1">
+    <path d="M 59.365156 69.588125 L 564.12 69.588125 L 564.12 27.757969 L 59.365156 27.757969 z" class="m-background"/>
+   </g>
+   <g id="plot1-value0-0"><title>15.0 meters, i guess?</title>
+    <path clip-path="url(#pcce33c7247)" d="M 59.365156 29.659339 L 299.724606 29.659339 L 299.724606 46.560413 L 59.365156 46.560413 z" class="m-bar m-success"/>
+   </g>
+   <g id="plot1-value0-1"><title>30.0 meters, i guess?</title>
+    <path clip-path="url(#pcce33c7247)" d="M 59.365156 50.785681 L 540.084055 50.785681 L 540.084055 67.686754 L 59.365156 67.686754 z" class="m-bar m-success"/>
+   </g>
+   <g id="matplotlib.axis_1">
+    <g id="xtick_1">
+     <g id="line2d_1">
+      <defs>
+       <path d="M 0 0 L 0 3.5" id="m67f9f4ece8" class="m-line"/>
+      </defs>
+      <g>
+       <use x="59.365156" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_1">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 59.365156, 84.946406)" x="59.365156" y="84.946406">0</text>
+     </g>
+    </g>
+    <g id="xtick_2">
+     <g id="line2d_2">
+      <g>
+       <use x="139.484973" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_2">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 139.484973, 84.946406)" x="139.484973" y="84.946406">5</text>
+     </g>
+    </g>
+    <g id="xtick_3">
+     <g id="line2d_3">
+      <g>
+       <use x="219.604789" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_3">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 219.604789, 84.946406)" x="219.604789" y="84.946406">10</text>
+     </g>
+    </g>
+    <g id="xtick_4">
+     <g id="line2d_4">
+      <g>
+       <use x="299.724606" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_4">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 299.724606, 84.946406)" x="299.724606" y="84.946406">15</text>
+     </g>
+    </g>
+    <g id="xtick_5">
+     <g id="line2d_5">
+      <g>
+       <use x="379.844422" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_5">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 379.844422, 84.946406)" x="379.844422" y="84.946406">20</text>
+     </g>
+    </g>
+    <g id="xtick_6">
+     <g id="line2d_6">
+      <g>
+       <use x="459.964239" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_6">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 459.964239, 84.946406)" x="459.964239" y="84.946406">25</text>
+     </g>
+    </g>
+    <g id="xtick_7">
+     <g id="line2d_7">
+      <g>
+       <use x="540.084055" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_7">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 540.084055, 84.946406)" x="540.084055" y="84.946406">30</text>
+     </g>
+    </g>
+    <g id="text_8">
+     <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 311.742578, 99.592344)" x="311.742578" y="99.592344">meters, i guess?</text>
+    </g>
+   </g>
+   <g id="matplotlib.axis_2">
+    <g id="ytick_1">
+     <g id="line2d_8">
+      <defs>
+       <path d="M 0 0 L -3.5 0" id="mb01a5532e0" class="m-line"/>
+      </defs>
+      <g>
+       <use x="59.365156" xlink:href="#mb01a5532e0" y="38.109876"/>
+      </g>
+     </g>
+     <g id="text_9">
+      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 52.365156, 42.289017)" x="52.365156" y="42.289017">First</text>
+     </g>
+    </g>
+    <g id="ytick_2">
+     <g id="line2d_9">
+      <g>
+       <use x="59.365156" xlink:href="#mb01a5532e0" y="59.236218"/>
+      </g>
+     </g>
+     <g id="text_10">
+      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 52.365156, 63.415358)" x="52.365156" y="63.415358">Second</text>
+     </g>
+    </g>
+   </g>
+   <g id="text_11">
+    <text class="m-title" style="text-anchor:middle;" transform="rotate(-0, 311.742578, 21.757969)" x="311.742578" y="21.757969">A plot with a single color</text>
+   </g>
+  </g>
+ </g>
+ <defs>
+  <clipPath id="pcce33c7247">
+   <rect height="41.830156" width="504.754844" x="59.365156" y="27.757969"/>
+  </clipPath>
+ </defs>
+</svg>
+</div>
+      </div>
+    </div>
+  </div>
+</article></main>
+</body>
+</html>
index a0b54cf8b8636630f7c11241feb8f605b836d9ee..9d85968177df9cf77e104ffb9db9367a689ce071 100644 (file)
@@ -27,7 +27,7 @@ div.m-plot svg { font-family: DejaVu Sans; }
 </style><div class="m-plot">
 <svg viewBox="0 0 576 113.76">
  <defs>
-  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+  <style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
  </defs>
  <g id="figure_1">
   <g id="axes_1">
@@ -35,122 +35,122 @@ div.m-plot svg { font-family: DejaVu Sans; }
     <path d="M 59.365156 69.588125 L 564.12 69.588125 L 564.12 27.757969 L 59.365156 27.757969 z" class="m-background"/>
    </g>
    <g id="plot1-value0-0"><title>15.0 meters, i guess?</title>
-    <path clip-path="url(#pcce33c7247)" d="M 59.365156 29.659339 L 299.724606 29.659339 L 299.724606 46.560413 L 59.365156 46.560413 z" class="m-bar m-success"/>
+    <path d="M 59.365156 29.659339 L 299.724606 29.659339 L 299.724606 46.560413 L 59.365156 46.560413 z" clip-path="url(#pcce33c7247)" class="m-bar m-success"/>
    </g>
    <g id="plot1-value0-1"><title>30.0 meters, i guess?</title>
-    <path clip-path="url(#pcce33c7247)" d="M 59.365156 50.785681 L 540.084055 50.785681 L 540.084055 67.686754 L 59.365156 67.686754 z" class="m-bar m-success"/>
+    <path d="M 59.365156 50.785681 L 540.084055 50.785681 L 540.084055 67.686754 L 59.365156 67.686754 z" clip-path="url(#pcce33c7247)" class="m-bar m-success"/>
    </g>
    <g id="matplotlib.axis_1">
     <g id="xtick_1">
      <g id="line2d_1">
       <defs>
-       <path d="M 0 0 L 0 3.5" id="m67f9f4ece8" class="m-line"/>
+       <path id="mc4bea1de13" d="M 0 0 L 0 3.5" class="m-line"/>
       </defs>
       <g>
-       <use x="59.365156" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="59.365156" y="69.588125"/>
       </g>
      </g>
      <g id="text_1">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 59.365156, 84.946406)" x="59.365156" y="84.946406">0</text>
+      <text class="m-label" style="text-anchor: middle" x="59.365156" y="84.946406" transform="rotate(-0, 59.365156, 84.946406)">0</text>
      </g>
     </g>
     <g id="xtick_2">
      <g id="line2d_2">
       <g>
-       <use x="139.484973" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="139.484973" y="69.588125"/>
       </g>
      </g>
      <g id="text_2">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 139.484973, 84.946406)" x="139.484973" y="84.946406">5</text>
+      <text class="m-label" style="text-anchor: middle" x="139.484973" y="84.946406" transform="rotate(-0, 139.484973, 84.946406)">5</text>
      </g>
     </g>
     <g id="xtick_3">
      <g id="line2d_3">
       <g>
-       <use x="219.604789" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="219.604789" y="69.588125"/>
       </g>
      </g>
      <g id="text_3">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 219.604789, 84.946406)" x="219.604789" y="84.946406">10</text>
+      <text class="m-label" style="text-anchor: middle" x="219.604789" y="84.946406" transform="rotate(-0, 219.604789, 84.946406)">10</text>
      </g>
     </g>
     <g id="xtick_4">
      <g id="line2d_4">
       <g>
-       <use x="299.724606" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="299.724606" y="69.588125"/>
       </g>
      </g>
      <g id="text_4">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 299.724606, 84.946406)" x="299.724606" y="84.946406">15</text>
+      <text class="m-label" style="text-anchor: middle" x="299.724606" y="84.946406" transform="rotate(-0, 299.724606, 84.946406)">15</text>
      </g>
     </g>
     <g id="xtick_5">
      <g id="line2d_5">
       <g>
-       <use x="379.844422" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="379.844422" y="69.588125"/>
       </g>
      </g>
      <g id="text_5">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 379.844422, 84.946406)" x="379.844422" y="84.946406">20</text>
+      <text class="m-label" style="text-anchor: middle" x="379.844422" y="84.946406" transform="rotate(-0, 379.844422, 84.946406)">20</text>
      </g>
     </g>
     <g id="xtick_6">
      <g id="line2d_6">
       <g>
-       <use x="459.964239" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="459.964239" y="69.588125"/>
       </g>
      </g>
      <g id="text_6">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 459.964239, 84.946406)" x="459.964239" y="84.946406">25</text>
+      <text class="m-label" style="text-anchor: middle" x="459.964239" y="84.946406" transform="rotate(-0, 459.964239, 84.946406)">25</text>
      </g>
     </g>
     <g id="xtick_7">
      <g id="line2d_7">
       <g>
-       <use x="540.084055" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="540.084055" y="69.588125"/>
       </g>
      </g>
      <g id="text_7">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 540.084055, 84.946406)" x="540.084055" y="84.946406">30</text>
+      <text class="m-label" style="text-anchor: middle" x="540.084055" y="84.946406" transform="rotate(-0, 540.084055, 84.946406)">30</text>
      </g>
     </g>
     <g id="text_8">
-     <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 311.742578, 99.592344)" x="311.742578" y="99.592344">meters, i guess?</text>
+     <text class="m-label" style="text-anchor: middle" x="311.742578" y="99.592344" transform="rotate(-0, 311.742578, 99.592344)">meters, i guess?</text>
     </g>
    </g>
    <g id="matplotlib.axis_2">
     <g id="ytick_1">
      <g id="line2d_8">
       <defs>
-       <path d="M 0 0 L -3.5 0" id="mb01a5532e0" class="m-line"/>
+       <path id="mae1c673641" d="M 0 0 L -3.5 0" class="m-line"/>
       </defs>
       <g>
-       <use x="59.365156" xlink:href="#mb01a5532e0" y="38.109876"/>
+       <use xlink:href="#mae1c673641" x="59.365156" y="38.109876"/>
       </g>
      </g>
      <g id="text_9">
-      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 52.365156, 42.289017)" x="52.365156" y="42.289017">First</text>
+      <text class="m-label" style="text-anchor: end" x="52.365156" y="42.289017" transform="rotate(-0, 52.365156, 42.289017)">First</text>
      </g>
     </g>
     <g id="ytick_2">
      <g id="line2d_9">
       <g>
-       <use x="59.365156" xlink:href="#mb01a5532e0" y="59.236218"/>
+       <use xlink:href="#mae1c673641" x="59.365156" y="59.236218"/>
       </g>
      </g>
      <g id="text_10">
-      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 52.365156, 63.415358)" x="52.365156" y="63.415358">Second</text>
+      <text class="m-label" style="text-anchor: end" x="52.365156" y="63.415358" transform="rotate(-0, 52.365156, 63.415358)">Second</text>
      </g>
     </g>
    </g>
    <g id="text_11">
-    <text class="m-title" style="text-anchor:middle;" transform="rotate(-0, 311.742578, 21.757969)" x="311.742578" y="21.757969">A plot with a single color</text>
+    <text class="m-title" style="text-anchor: middle" x="311.742578" y="21.757969" transform="rotate(-0, 311.742578, 21.757969)">A plot with a single color</text>
    </g>
   </g>
  </g>
  <defs>
   <clipPath id="pcce33c7247">
-   <rect height="41.830156" width="504.754844" x="59.365156" y="27.757969"/>
+   <rect x="59.365156" y="27.757969" width="504.754844" height="41.830156"/>
   </clipPath>
  </defs>
 </svg>
index 276dc199f86ec70c8ad52ae8705c80864aa7d9ae..0fa5644912457583364907cb6915c428c9f07d6c 100644 (file)
@@ -93,8 +93,10 @@ class Plugins(BaseTestCase):
 
         # I assume this will be a MASSIVE ANNOYANCE at some point as well so
         # keeping it separate. (Yes, thank you past mosra. Very helpful.)
-        if LooseVersion(matplotlib.__version__) >= LooseVersion('3.4'):
+        if LooseVersion(matplotlib.__version__) >= LooseVersion('3.5'):
             self.assertEqual(*self.actual_expected_contents('plots.html'))
+        elif LooseVersion(matplotlib.__version__) >= LooseVersion('3.4'):
+            self.assertEqual(*self.actual_expected_contents('plots.html', 'plots-34.html'))
         else:
             self.assertEqual(*self.actual_expected_contents('plots.html', 'plots-32.html'))
         self.assertTrue(os.path.exists(os.path.join(self.path, 'output/tiny.png')))
index 91260a0f6a527320b135dc01c565ab1adbe87b4c..26d299421544cab13783ae4e90548ce11a1d38cb 100644 (file)
@@ -57,8 +57,6 @@ commands:
     steps:
     - run:
         name: Install Python dependencies
-        # Matplotlib 3.5.1 has different order of attributes than 3.4, so can't
-        # just use the latest (and 3.4 is not on the Python 3.6 image)
         # Pygments 2.11 (and apparently 2.10 as well) treats certain whitespace
         # differently, I have to update the expected output first.
         # Docutils 0.18 drops some attribute that htmlsanity relies on, I need
@@ -206,6 +204,8 @@ jobs:
     - install-base:
         extra: graphviz cmake ninja-build wget
     - install-python-deps:
+        # Matplotlib 3.5 has significantly different output, be sure to have
+        # at least one job testing 3.4 so we don't regress
         matplotlib-version: ==3.4.3
     - checkout
     - test-theme
@@ -220,8 +220,7 @@ jobs:
     steps:
     - install-base:
         extra: graphviz cmake ninja-build wget
-    - install-python-deps:
-        matplotlib-version: ==3.4.3
+    - install-python-deps
     - checkout
     - test-theme
     - test-plugins
@@ -237,8 +236,7 @@ jobs:
     steps:
     - install-base:
         extra: graphviz cmake ninja-build wget
-    - install-python-deps:
-        matplotlib-version: ==3.4.3
+    - install-python-deps
     - checkout
     - test-theme
     - test-plugins
@@ -254,8 +252,7 @@ jobs:
     steps:
     - install-base:
         extra: graphviz cmake ninja-build wget
-    - install-python-deps:
-        matplotlib-version: ==3.4.3
+    - install-python-deps
     - checkout
     - test-theme
     - test-plugins
index 179b73f4265c6229bfe8fa68170155494fb7ebb8..15733d06d8f52a4f0535196b4dc91cb04e2c60f1 100644 (file)
@@ -79,22 +79,25 @@ style_mapping = {
 # <metadata> field (which we're not interested in) and slightly different
 # formatting of the global style after (which we unify to the compact version).
 # Matplotlib 3.4 drops the "Created with" comment, as that's in the <metadata>
-# already anyway.
+# already anyway. Matplotlib 3.5 changes order of the <svg> attributes (which
+# we ignore anyway, so those aren't matched anymore), order of stroke CSS
+# properties and whitespace/semicolons (which we preserve for consistency with
+# the rest of the output).
 _patch_src = re.compile(r"""<\?xml version="1\.0" encoding="utf-8" standalone="no"\?>
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1\.1//EN"
   "http://www\.w3\.org/Graphics/SVG/1\.1/DTD/svg11\.dtd">(
 <!-- Created with matplotlib \(https?://matplotlib.org/\) -->)?
-<svg height="\d+(\.\d+)?pt" version="1.1" (?P<viewBox>viewBox="0 0 \d+ \d+(\.\d+)?") width="\d+(\.\d+)?pt" xmlns="http://www\.w3\.org/2000/svg" xmlns:xlink="http://www\.w3\.org/1999/xlink">(
+<svg [^>]+(?P<viewBox>viewBox="0 0 \d+ \d+(\.\d+)?")[^>]+>(
  <metadata>.+</metadata>)?
  <defs>
   <style type="text/css">
-?\*{stroke-linecap:butt;stroke-linejoin:round;}(
+?\*{(?P<style>stroke-linecap:butt;stroke-linejoin:round;|stroke-linejoin: round; stroke-linecap: butt)}(
   )?</style>
  </defs>
 """, re.DOTALL)
 _patch_dst = r"""<svg \g<viewBox>>
  <defs>
-  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+  <style type="text/css">*{\g<style>}</style>
  </defs>
 """
 
@@ -104,47 +107,47 @@ _path_patch_dst = '\\g<prev> \\g<next>'
 _path_patch2_src = re.compile(' ?\n"')
 _path_patch2_dst = '"'
 
-# Mapping from color codes to CSS classes
+# Mapping from color codes to CSS classes. Matplotlib 3.5 added quite a lot of
+# spacing to the style attributes compared to previous versions (and dropped
+# trailing semicolons), so there's a lot of ` ?` and ` ;` to cover both
+# variants.
 _class_mapping = [
     # Graph background
-    ('style="fill:#cafe01;"', 'class="m-background"'),
+    (re.compile('style="fill: ?#cafe01;?"'), 'class="m-background"'),
 
     # Tick <path> definition in <defs>
-    ('style="stroke:#cafe02;stroke-width:0.8;"', 'class="m-line"'),
-    # <use>, everything is defined in <defs>, no need to repeat
-    ('<use style="fill:#cafe02;stroke:#cafe02;stroke-width:0.8;"', '<use'),
+    (re.compile('style="stroke: ?#cafe02; ?stroke-width: ?0.8;?"'), 'class="m-line"'),
+    # <use>, everything is defined in <defs>, no need to repeat. Matplotlib 3.5
+    # has style at the end of the tag, so preserving whatever is in between.
+    (re.compile('<use([^>]*) style="fill: ?#cafe02; ?stroke: ?#cafe02; ?stroke-width: ?0.8;?"'), '<use\\1'),
 
-    # Text styles have `font-stretch:normal;` added in matplotlib 3.3, so
-    # all of them are duplicated to handle this
+    # Text styles have `font-stretch:normal;` added in matplotlib 3.3;
+    # 3.5 changes all font properties to just a single `font:` declaration.
 
     # Label text on left
-    ('style="fill:#cafe02;font-family:{font};font-size:11px;font-style:normal;font-weight:normal;"', 'class="m-label"'),
-    ('style="fill:#cafe02;font-family:{font};font-size:11px;font-stretch:normal;font-style:normal;font-weight:normal;"', 'class="m-label"'),
+    (re.compile('style="fill: ?#cafe02;(font-family:[^;]+;font-size:11px;(font-stretch:normal;)?font-style:normal;font-weight:normal;| font: 11px \'[^\']+\')"'), 'class="m-label"'),
     # Label text on bottom (has extra style params)
-    ('style="fill:#cafe02;font-family:{font};font-size:11px;font-style:normal;font-weight:normal;', 'class="m-label" style="'),
-    ('style="fill:#cafe02;font-family:{font};font-size:11px;font-stretch:normal;font-style:normal;font-weight:normal;', 'class="m-label" style="'),
+    (re.compile('style="fill: ?#cafe02;(font-family:[^;]+;font-size:11px;(font-stretch:normal;)?font-style:normal;font-weight:normal;| font: 11px \'[^\']+\'; )'), 'class="m-label" style="'),
     # Secondary label text
-    ('style="fill:#cafe0b;font-family:{font};font-size:11px;font-style:normal;font-weight:normal;"', 'class="m-label m-dim"'),
-    ('style="fill:#cafe0b;font-family:{font};font-size:11px;font-stretch:normal;font-style:normal;font-weight:normal;"', 'class="m-label m-dim"'),
-    # Title text
-    ('style="fill:#cafe02;font-family:{font};font-size:13px;font-style:normal;font-weight:normal;', 'class="m-title" style="'),
-    ('style="fill:#cafe02;font-family:{font};font-size:13px;font-stretch:normal;font-style:normal;font-weight:normal;', 'class="m-title" style="'),
+    (re.compile('style="fill: ?#cafe0b;(font-family:[^;]+;font-size:11px;(font-stretch:normal;)?font-style:normal;font-weight:normal;| font: 11px \'[^\']+\')"'), 'class="m-label m-dim"'),
+    # Title text (has extra style params)
+    (re.compile('style="fill: ?#cafe02;(font-family:[^;]+;font-size:13px;(font-stretch:normal;)?font-style:normal;font-weight:normal;| font: 13px \'[^\']+\'; )'), 'class="m-title" style="'),
 
     # Bar colors. Keep in sync with latex2svgextra.
-    ('style="fill:#cafe03;"', 'class="m-bar m-default"'),
-    ('style="fill:#cafe04;"', 'class="m-bar m-primary"'),
-    ('style="fill:#cafe05;"', 'class="m-bar m-success"'),
-    ('style="fill:#cafe06;"', 'class="m-bar m-warning"'),
-    ('style="fill:#cafe07;"', 'class="m-bar m-danger"'),
-    ('style="fill:#cafe08;"', 'class="m-bar m-info"'),
-    ('style="fill:#cafe09;"', 'class="m-bar m-dim"'),
+    (re.compile('style="fill: ?#cafe03;?"'), 'class="m-bar m-default"'),
+    (re.compile('style="fill: ?#cafe04;?"'), 'class="m-bar m-primary"'),
+    (re.compile('style="fill: ?#cafe05;?"'), 'class="m-bar m-success"'),
+    (re.compile('style="fill: ?#cafe06;?"'), 'class="m-bar m-warning"'),
+    (re.compile('style="fill: ?#cafe07;?"'), 'class="m-bar m-danger"'),
+    (re.compile('style="fill: ?#cafe08;?"'), 'class="m-bar m-info"'),
+    (re.compile('style="fill: ?#cafe09;?"'), 'class="m-bar m-dim"'),
 
     # Error bar line
-    ('style="fill:none;stroke:#cafe0a;stroke-width:1.5;"', 'class="m-error"'),
+    (re.compile('style="fill: ?none; ?stroke: ?#cafe0a; ?stroke-width: ?1.5;?"'), 'class="m-error"'),
     # Error bar <path> definition in <defs>
-    ('style="stroke:#cafe0a;"', 'class="m-error"'),
+    (re.compile('style="stroke: ?#cafe0a;?"'), 'class="m-error"'),
     # <use>, everything is defined in <defs>, no need to repeat
-    ('<use style="fill:#cafe0a;stroke:#cafe0a;"', '<use'),
+    (re.compile('<use([^>]*) style="fill: ?#cafe0a; ?stroke: ?#cafe0a;?"'), '<use\\1'),
 ]
 
 # Titles for bars
@@ -279,7 +282,7 @@ class Plot(rst.Directive):
         # Remove needless newlines and trailing whitespace in path data
         imgdata = _path_patch2_src.sub(_path_patch2_dst, _path_patch_src.sub(_path_patch_dst, imgdata))
         # Replace color codes with CSS classes
-        for src, dst in _class_mapping: imgdata = imgdata.replace(src, dst)
+        for src, dst in _class_mapping: imgdata = src.sub(dst, imgdata)
         # Add titles for bars
         for i in range(len(value_sets)):
             for j in range(len(labels)):
@@ -305,9 +308,6 @@ def new_page(*args, **kwargs):
 
 def register_mcss(mcss_settings, hooks_pre_page, **kwargs):
     font = mcss_settings.get('M_PLOTS_FONT', 'Source Sans Pro')
-    for i in range(len(_class_mapping)):
-        src, dst = _class_mapping[i]
-        _class_mapping[i] = (src.format(font=font), dst)
     mpl.rcParams['font.family'] = font
 
     hooks_pre_page += [new_page]
diff --git a/plugins/m/test/plots/page-34.html b/plugins/m/test/plots/page-34.html
new file mode 100644 (file)
index 0000000..87863ba
--- /dev/null
@@ -0,0 +1,682 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <title>m.plots | A Pelican Blog</title>
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i" />
+  <link rel="stylesheet" href="static/m-dark.css" />
+  <link rel="canonical" href="page.html" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</head>
+<body>
+<header><nav id="navigation">
+  <div class="m-container">
+    <div class="m-row">
+      <a href="./" id="m-navbar-brand" class="m-col-t-9 m-col-m-none m-left-m">A Pelican Blog</a>
+    </div>
+  </div>
+</nav></header>
+<main>
+<article>
+  <div class="m-container m-container-inflatable">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <h1>m.plots</h1>
+<!-- content -->
+<p>Note: the test uses DejaVu Sans instead of Source Sans Pro in order to have
+predictable rendering on the CIs.</p>
+<style>
+div.m-plot svg { font-family: DejaVu Sans; }
+</style><div class="m-plot">
+<svg viewBox="0 0 576 113.76">
+ <defs>
+  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+ </defs>
+ <g id="figure_1">
+  <g id="axes_1">
+   <g id="patch_1">
+    <path d="M 59.365156 69.588125 L 564.12 69.588125 L 564.12 27.757969 L 59.365156 27.757969 z" class="m-background"/>
+   </g>
+   <g id="plot1-value0-0"><title>15.0 meters, i guess?</title>
+    <path clip-path="url(#pcce33c7247)" d="M 59.365156 29.659339 L 299.724606 29.659339 L 299.724606 46.560413 L 59.365156 46.560413 z" class="m-bar m-success"/>
+   </g>
+   <g id="plot1-value0-1"><title>30.0 meters, i guess?</title>
+    <path clip-path="url(#pcce33c7247)" d="M 59.365156 50.785681 L 540.084055 50.785681 L 540.084055 67.686754 L 59.365156 67.686754 z" class="m-bar m-success"/>
+   </g>
+   <g id="matplotlib.axis_1">
+    <g id="xtick_1">
+     <g id="line2d_1">
+      <defs>
+       <path d="M 0 0 L 0 3.5" id="m67f9f4ece8" class="m-line"/>
+      </defs>
+      <g>
+       <use x="59.365156" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_1">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 59.365156, 84.946406)" x="59.365156" y="84.946406">0</text>
+     </g>
+    </g>
+    <g id="xtick_2">
+     <g id="line2d_2">
+      <g>
+       <use x="139.484973" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_2">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 139.484973, 84.946406)" x="139.484973" y="84.946406">5</text>
+     </g>
+    </g>
+    <g id="xtick_3">
+     <g id="line2d_3">
+      <g>
+       <use x="219.604789" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_3">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 219.604789, 84.946406)" x="219.604789" y="84.946406">10</text>
+     </g>
+    </g>
+    <g id="xtick_4">
+     <g id="line2d_4">
+      <g>
+       <use x="299.724606" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_4">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 299.724606, 84.946406)" x="299.724606" y="84.946406">15</text>
+     </g>
+    </g>
+    <g id="xtick_5">
+     <g id="line2d_5">
+      <g>
+       <use x="379.844422" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_5">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 379.844422, 84.946406)" x="379.844422" y="84.946406">20</text>
+     </g>
+    </g>
+    <g id="xtick_6">
+     <g id="line2d_6">
+      <g>
+       <use x="459.964239" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_6">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 459.964239, 84.946406)" x="459.964239" y="84.946406">25</text>
+     </g>
+    </g>
+    <g id="xtick_7">
+     <g id="line2d_7">
+      <g>
+       <use x="540.084055" xlink:href="#m67f9f4ece8" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_7">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 540.084055, 84.946406)" x="540.084055" y="84.946406">30</text>
+     </g>
+    </g>
+    <g id="text_8">
+     <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 311.742578, 99.592344)" x="311.742578" y="99.592344">meters, i guess?</text>
+    </g>
+   </g>
+   <g id="matplotlib.axis_2">
+    <g id="ytick_1">
+     <g id="line2d_8">
+      <defs>
+       <path d="M 0 0 L -3.5 0" id="mb01a5532e0" class="m-line"/>
+      </defs>
+      <g>
+       <use x="59.365156" xlink:href="#mb01a5532e0" y="38.109876"/>
+      </g>
+     </g>
+     <g id="text_9">
+      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 52.365156, 42.289017)" x="52.365156" y="42.289017">First</text>
+     </g>
+    </g>
+    <g id="ytick_2">
+     <g id="line2d_9">
+      <g>
+       <use x="59.365156" xlink:href="#mb01a5532e0" y="59.236218"/>
+      </g>
+     </g>
+     <g id="text_10">
+      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 52.365156, 63.415358)" x="52.365156" y="63.415358">Second</text>
+     </g>
+    </g>
+   </g>
+   <g id="text_11">
+    <text class="m-title" style="text-anchor:middle;" transform="rotate(-0, 311.742578, 21.757969)" x="311.742578" y="21.757969">A plot with a single color</text>
+   </g>
+  </g>
+ </g>
+ <defs>
+  <clipPath id="pcce33c7247">
+   <rect height="41.830156" width="504.754844" x="59.365156" y="27.757969"/>
+  </clipPath>
+ </defs>
+</svg>
+</div>
+<div class="m-col-m-6 m-center-m">
+<p>A plot with separate colors, extra labels, error bars and custom width + height</p>
+<div class="m-plot">
+<svg viewBox="0 0 324 218.16">
+ <defs>
+  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+ </defs>
+ <g id="figure_1">
+  <g id="axes_1">
+   <g id="patch_1">
+    <path d="M 76.642031 173.988125 L 312.12 173.988125 L 312.12 27.757969 L 76.642031 27.757969 z" class="m-background"/>
+   </g>
+   <g id="plot2-value0-0"><title>3.0 ± 0.1 Mondays</title>
+    <path clip-path="url(#p91542c6844)" d="M 76.642031 34.404794 L 186.936162 34.404794 L 186.936162 72.386653 L 76.642031 72.386653 z" class="m-bar m-success"/>
+   </g>
+   <g id="plot2-value0-1"><title>4.0 ± 2.1 Mondays</title>
+    <path clip-path="url(#p91542c6844)" d="M 76.642031 81.882117 L 223.700872 81.882117 L 223.700872 119.863976 L 76.642031 119.863976 z" class="m-bar m-info"/>
+   </g>
+   <g id="plot2-value0-2"><title>5.0 ± 1.0 Mondays</title>
+    <path clip-path="url(#p91542c6844)" d="M 76.642031 129.359441 L 260.465582 129.359441 L 260.465582 167.3413 L 76.642031 167.3413 z" class="m-bar m-danger"/>
+   </g>
+   <g id="matplotlib.axis_1">
+    <g id="xtick_1">
+     <g id="line2d_1">
+      <defs>
+       <path d="M 0 0 L 0 3.5" id="m6ad40cba81" class="m-line"/>
+      </defs>
+      <g>
+       <use x="76.642031" xlink:href="#m6ad40cba81" y="173.988125"/>
+      </g>
+     </g>
+     <g id="text_1">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 76.642031, 189.346406)" x="76.642031" y="189.346406">0</text>
+     </g>
+    </g>
+    <g id="xtick_2">
+     <g id="line2d_2">
+      <g>
+       <use x="113.406741" xlink:href="#m6ad40cba81" y="173.988125"/>
+      </g>
+     </g>
+     <g id="text_2">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 113.406741, 189.346406)" x="113.406741" y="189.346406">1</text>
+     </g>
+    </g>
+    <g id="xtick_3">
+     <g id="line2d_3">
+      <g>
+       <use x="150.171452" xlink:href="#m6ad40cba81" y="173.988125"/>
+      </g>
+     </g>
+     <g id="text_3">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 150.171452, 189.346406)" x="150.171452" y="189.346406">2</text>
+     </g>
+    </g>
+    <g id="xtick_4">
+     <g id="line2d_4">
+      <g>
+       <use x="186.936162" xlink:href="#m6ad40cba81" y="173.988125"/>
+      </g>
+     </g>
+     <g id="text_4">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 186.936162, 189.346406)" x="186.936162" y="189.346406">3</text>
+     </g>
+    </g>
+    <g id="xtick_5">
+     <g id="line2d_5">
+      <g>
+       <use x="223.700872" xlink:href="#m6ad40cba81" y="173.988125"/>
+      </g>
+     </g>
+     <g id="text_5">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 223.700872, 189.346406)" x="223.700872" y="189.346406">4</text>
+     </g>
+    </g>
+    <g id="xtick_6">
+     <g id="line2d_6">
+      <g>
+       <use x="260.465582" xlink:href="#m6ad40cba81" y="173.988125"/>
+      </g>
+     </g>
+     <g id="text_6">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 260.465582, 189.346406)" x="260.465582" y="189.346406">5</text>
+     </g>
+    </g>
+    <g id="xtick_7">
+     <g id="line2d_7">
+      <g>
+       <use x="297.230292" xlink:href="#m6ad40cba81" y="173.988125"/>
+      </g>
+     </g>
+     <g id="text_7">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 297.230292, 189.346406)" x="297.230292" y="189.346406">6</text>
+     </g>
+    </g>
+    <g id="text_8">
+     <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 194.381016, 203.992344)" x="194.381016" y="203.992344">Mondays</text>
+    </g>
+   </g>
+   <g id="matplotlib.axis_2">
+    <g id="ytick_1">
+     <g id="line2d_8">
+      <defs>
+       <path d="M 0 0 L -3.5 0" id="mb742502bbb" class="m-line"/>
+      </defs>
+      <g>
+       <use x="76.642031" xlink:href="#mb742502bbb" y="53.395723"/>
+      </g>
+     </g>
+     <g id="text_9">
+      <text class="m-label" transform="translate(27.94 52.251895)">January</text>
+      <text class="m-label" transform="translate(69.642031 64.569489)"/>
+     </g>
+    </g>
+    <g id="ytick_2">
+     <g id="line2d_9">
+      <g>
+       <use x="76.642031" xlink:href="#mb742502bbb" y="100.873047"/>
+      </g>
+     </g>
+     <g id="text_10">
+      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 69.642031, 105.052188)" x="69.642031" y="105.052188">February</text>
+     </g>
+    </g>
+    <g id="ytick_3">
+     <g id="line2d_10">
+      <g>
+       <use x="76.642031" xlink:href="#mb742502bbb" y="148.35037"/>
+      </g>
+     </g>
+     <g id="text_11">
+      <text class="m-label" transform="translate(36.116094 147.206542)">March</text>
+      <text class="m-label" transform="translate(69.642031 159.524136)"/>
+     </g>
+    </g>
+   </g>
+   <g id="LineCollection_1">
+    <path clip-path="url(#p91542c6844)" d="M 183.259691 53.395723 L 190.612633 53.395723" class="m-error"/>
+    <path clip-path="url(#p91542c6844)" d="M 146.494981 100.873047 L 300.906763 100.873047" class="m-error"/>
+    <path clip-path="url(#p91542c6844)" d="M 223.700872 148.35037 L 297.230292 148.35037" class="m-error"/>
+   </g>
+   <g id="line2d_11">
+    <defs>
+     <path d="M 0 9.375 L 0 -9.375" id="md2c73e2086" class="m-error"/>
+    </defs>
+    <g clip-path="url(#p91542c6844)">
+     <use x="183.259691" xlink:href="#md2c73e2086" y="53.395723"/>
+     <use x="146.494981" xlink:href="#md2c73e2086" y="100.873047"/>
+     <use x="223.700872" xlink:href="#md2c73e2086" y="148.35037"/>
+    </g>
+   </g>
+   <g id="line2d_12">
+    <g clip-path="url(#p91542c6844)">
+     <use x="190.612633" xlink:href="#md2c73e2086" y="53.395723"/>
+     <use x="300.906763" xlink:href="#md2c73e2086" y="100.873047"/>
+     <use x="297.230292" xlink:href="#md2c73e2086" y="148.35037"/>
+    </g>
+   </g>
+   <g id="text_12">
+    <text class="m-label m-dim" transform="translate(69.642031 52.646105)"/>
+    <text class="m-label m-dim" transform="translate(11.88 64.963699)">a paradise</text>
+   </g>
+   <g id="text_13">
+    <text class="m-label m-dim" transform="translate(69.642031 147.600752)"/>
+    <text class="m-label m-dim" transform="translate(45.380156 159.918346)">hell!</text>
+   </g>
+   <g id="text_14">
+    <text class="m-title" style="text-anchor:middle;" transform="rotate(-0, 194.381016, 21.757969)" x="194.381016" y="21.757969">Yes.</text>
+   </g>
+  </g>
+ </g>
+ <defs>
+  <clipPath id="p91542c6844">
+   <rect height="146.230156" width="235.477969" x="76.642031" y="27.757969"/>
+  </clipPath>
+ </defs>
+</svg>
+</div>
+</div>
+<div class="m-plot">
+<svg viewBox="0 0 576 142.56">
+ <defs>
+  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+ </defs>
+ <g id="figure_1">
+  <g id="axes_1">
+   <g id="patch_1">
+    <path d="M 26.561094 98.388125 L 564.12 98.388125 L 564.12 27.757969 L 26.561094 27.757969 z" class="m-background"/>
+   </g>
+   <g id="plot3-value0-0"><title>111.9 kB</title>
+    <path clip-path="url(#p3be1189609)" d="M 26.561094 30.96843 L 94.510828 30.96843 L 94.510828 49.313926 L 26.561094 49.313926 z" class="m-bar m-success"/>
+   </g>
+   <g id="plot3-value0-1"><title>74.4 kB</title>
+    <path clip-path="url(#p3be1189609)" d="M 26.561094 53.900299 L 71.739469 53.900299 L 71.739469 72.245794 L 26.561094 72.245794 z" class="m-bar m-success"/>
+   </g>
+   <g id="plot3-value0-2"><title>52.1 kB</title>
+    <path clip-path="url(#p3be1189609)" d="M 26.561094 76.832168 L 58.198101 76.832168 L 58.198101 95.177663 L 26.561094 95.177663 z" class="m-bar m-success"/>
+   </g>
+   <g id="plot3-value1-0"><title>731.2 kB</title>
+    <path clip-path="url(#p3be1189609)" d="M 94.510828 30.96843 L 538.521957 30.96843 L 538.521957 49.313926 L 94.510828 49.313926 z" class="m-bar m-info"/>
+   </g>
+   <g id="plot3-value1-1"><title>226.3 kB</title>
+    <path clip-path="url(#p3be1189609)" d="M 71.739469 53.900299 L 209.157027 53.900299 L 209.157027 72.245794 L 71.739469 72.245794 z" class="m-bar m-info"/>
+   </g>
+   <g id="plot3-value1-2"><title>226.0 kB</title>
+    <path clip-path="url(#p3be1189609)" d="M 58.198101 76.832168 L 195.433489 76.832168 L 195.433489 95.177663 L 58.198101 95.177663 z" class="m-bar m-info"/>
+   </g>
+   <g id="matplotlib.axis_1">
+    <g id="xtick_1">
+     <g id="line2d_1">
+      <defs>
+       <path d="M 0 0 L 0 3.5" id="me38155cefd" class="m-line"/>
+      </defs>
+      <g>
+       <use x="26.561094" xlink:href="#me38155cefd" y="98.388125"/>
+      </g>
+     </g>
+     <g id="text_1">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 26.561094, 113.746406)" x="26.561094" y="113.746406">0</text>
+     </g>
+    </g>
+    <g id="xtick_2">
+     <g id="line2d_2">
+      <g>
+       <use x="87.284716" xlink:href="#me38155cefd" y="98.388125"/>
+      </g>
+     </g>
+     <g id="text_2">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 87.284716, 113.746406)" x="87.284716" y="113.746406">100</text>
+     </g>
+    </g>
+    <g id="xtick_3">
+     <g id="line2d_3">
+      <g>
+       <use x="148.008339" xlink:href="#me38155cefd" y="98.388125"/>
+      </g>
+     </g>
+     <g id="text_3">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 148.008339, 113.746406)" x="148.008339" y="113.746406">200</text>
+     </g>
+    </g>
+    <g id="xtick_4">
+     <g id="line2d_4">
+      <g>
+       <use x="208.731962" xlink:href="#me38155cefd" y="98.388125"/>
+      </g>
+     </g>
+     <g id="text_4">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 208.731962, 113.746406)" x="208.731962" y="113.746406">300</text>
+     </g>
+    </g>
+    <g id="xtick_5">
+     <g id="line2d_5">
+      <g>
+       <use x="269.455585" xlink:href="#me38155cefd" y="98.388125"/>
+      </g>
+     </g>
+     <g id="text_5">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 269.455585, 113.746406)" x="269.455585" y="113.746406">400</text>
+     </g>
+    </g>
+    <g id="xtick_6">
+     <g id="line2d_6">
+      <g>
+       <use x="330.179207" xlink:href="#me38155cefd" y="98.388125"/>
+      </g>
+     </g>
+     <g id="text_6">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 330.179207, 113.746406)" x="330.179207" y="113.746406">500</text>
+     </g>
+    </g>
+    <g id="xtick_7">
+     <g id="line2d_7">
+      <g>
+       <use x="390.90283" xlink:href="#me38155cefd" y="98.388125"/>
+      </g>
+     </g>
+     <g id="text_7">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 390.90283, 113.746406)" x="390.90283" y="113.746406">600</text>
+     </g>
+    </g>
+    <g id="xtick_8">
+     <g id="line2d_8">
+      <g>
+       <use x="451.626453" xlink:href="#me38155cefd" y="98.388125"/>
+      </g>
+     </g>
+     <g id="text_8">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 451.626453, 113.746406)" x="451.626453" y="113.746406">700</text>
+     </g>
+    </g>
+    <g id="xtick_9">
+     <g id="line2d_9">
+      <g>
+       <use x="512.350075" xlink:href="#me38155cefd" y="98.388125"/>
+      </g>
+     </g>
+     <g id="text_9">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 512.350075, 113.746406)" x="512.350075" y="113.746406">800</text>
+     </g>
+    </g>
+    <g id="text_10">
+     <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 295.340547, 128.392344)" x="295.340547" y="128.392344">kB</text>
+    </g>
+   </g>
+   <g id="matplotlib.axis_2">
+    <g id="ytick_1">
+     <g id="line2d_10">
+      <defs>
+       <path d="M 0 0 L -3.5 0" id="m9ccd95d470" class="m-line"/>
+      </defs>
+      <g>
+       <use x="26.561094" xlink:href="#m9ccd95d470" y="40.141178"/>
+      </g>
+     </g>
+     <g id="text_11">
+      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 19.561094, 44.320319)" x="19.561094" y="44.320319">A</text>
+     </g>
+    </g>
+    <g id="ytick_2">
+     <g id="line2d_11">
+      <g>
+       <use x="26.561094" xlink:href="#m9ccd95d470" y="63.073047"/>
+      </g>
+     </g>
+     <g id="text_12">
+      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 19.561094, 67.252188)" x="19.561094" y="67.252188">B</text>
+     </g>
+    </g>
+    <g id="ytick_3">
+     <g id="line2d_12">
+      <g>
+       <use x="26.561094" xlink:href="#m9ccd95d470" y="86.004916"/>
+      </g>
+     </g>
+     <g id="text_13">
+      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 19.561094, 90.184056)" x="19.561094" y="90.184056">C</text>
+     </g>
+    </g>
+   </g>
+   <g id="text_14">
+    <text class="m-title" style="text-anchor:middle;" transform="rotate(-0, 295.340547, 21.757969)" x="295.340547" y="21.757969">Stacked plot</text>
+   </g>
+  </g>
+ </g>
+ <defs>
+  <clipPath id="p3be1189609">
+   <rect height="70.630156" width="537.558906" x="26.561094" y="27.757969"/>
+  </clipPath>
+ </defs>
+</svg>
+</div>
+<div class="m-plot">
+<svg viewBox="0 0 576 113.76">
+ <defs>
+  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+ </defs>
+ <g id="figure_1">
+  <g id="axes_1">
+   <g id="patch_1">
+    <path d="M 26.427031 69.588125 L 564.12 69.588125 L 564.12 27.757969 L 26.427031 27.757969 z" class="m-background"/>
+   </g>
+   <g id="plot4-value0-0"><title>111.9 ± 25.0 kB</title>
+    <path clip-path="url(#p49914ebfa5)" d="M 26.427031 29.659339 L 81.36204 29.659339 L 81.36204 46.560413 L 26.427031 46.560413 z" class="m-bar m-success"/>
+   </g>
+   <g id="plot4-value0-1"><title>74.4 ± 15.3 kB</title>
+    <path clip-path="url(#p49914ebfa5)" d="M 26.427031 50.785681 L 62.952185 50.785681 L 62.952185 67.686754 L 26.427031 67.686754 z" class="m-bar m-danger"/>
+   </g>
+   <g id="plot4-value1-0"><title>731.2 ± 200.0 kB</title>
+    <path clip-path="url(#p49914ebfa5)" d="M 81.36204 29.659339 L 440.329677 29.659339 L 440.329677 46.560413 L 81.36204 46.560413 z" class="m-bar m-info"/>
+   </g>
+   <g id="plot4-value1-1"><title>226.3 ± 5.0 kB</title>
+    <path clip-path="url(#p49914ebfa5)" d="M 62.952185 50.785681 L 174.049526 50.785681 L 174.049526 67.686754 L 62.952185 67.686754 z" class="m-bar m-primary"/>
+   </g>
+   <g id="matplotlib.axis_1">
+    <g id="xtick_1">
+     <g id="line2d_1">
+      <defs>
+       <path d="M 0 0 L 0 3.5" id="m61481b8dfb" class="m-line"/>
+      </defs>
+      <g>
+       <use x="26.427031" xlink:href="#m61481b8dfb" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_1">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 26.427031, 84.946406)" x="26.427031" y="84.946406">0</text>
+     </g>
+    </g>
+    <g id="xtick_2">
+     <g id="line2d_2">
+      <g>
+       <use x="124.612927" xlink:href="#m61481b8dfb" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_2">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 124.612927, 84.946406)" x="124.612927" y="84.946406">200</text>
+     </g>
+    </g>
+    <g id="xtick_3">
+     <g id="line2d_3">
+      <g>
+       <use x="222.798824" xlink:href="#m61481b8dfb" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_3">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 222.798824, 84.946406)" x="222.798824" y="84.946406">400</text>
+     </g>
+    </g>
+    <g id="xtick_4">
+     <g id="line2d_4">
+      <g>
+       <use x="320.98472" xlink:href="#m61481b8dfb" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_4">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 320.98472, 84.946406)" x="320.98472" y="84.946406">600</text>
+     </g>
+    </g>
+    <g id="xtick_5">
+     <g id="line2d_5">
+      <g>
+       <use x="419.170616" xlink:href="#m61481b8dfb" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_5">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 419.170616, 84.946406)" x="419.170616" y="84.946406">800</text>
+     </g>
+    </g>
+    <g id="xtick_6">
+     <g id="line2d_6">
+      <g>
+       <use x="517.356512" xlink:href="#m61481b8dfb" y="69.588125"/>
+      </g>
+     </g>
+     <g id="text_6">
+      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 517.356512, 84.946406)" x="517.356512" y="84.946406">1000</text>
+     </g>
+    </g>
+    <g id="text_7">
+     <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 295.273516, 99.592344)" x="295.273516" y="99.592344">kB</text>
+    </g>
+   </g>
+   <g id="matplotlib.axis_2">
+    <g id="ytick_1">
+     <g id="line2d_7">
+      <defs>
+       <path d="M 0 0 L -3.5 0" id="m6e7aba3b4c" class="m-line"/>
+      </defs>
+      <g>
+       <use x="26.427031" xlink:href="#m6e7aba3b4c" y="38.109876"/>
+      </g>
+     </g>
+     <g id="text_8">
+      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 19.427031, 42.289017)" x="19.427031" y="42.289017">A</text>
+     </g>
+    </g>
+    <g id="ytick_2">
+     <g id="line2d_8">
+      <g>
+       <use x="26.427031" xlink:href="#m6e7aba3b4c" y="59.236218"/>
+      </g>
+     </g>
+     <g id="text_9">
+      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 19.427031, 63.415358)" x="19.427031" y="63.415358">B</text>
+     </g>
+    </g>
+   </g>
+   <g id="LineCollection_1">
+    <path clip-path="url(#p49914ebfa5)" d="M 69.088803 38.109876 L 93.635277 38.109876" class="m-error"/>
+    <path clip-path="url(#p49914ebfa5)" d="M 55.440964 59.236218 L 70.463406 59.236218" class="m-error"/>
+   </g>
+   <g id="LineCollection_2">
+    <path clip-path="url(#p49914ebfa5)" d="M 342.143781 38.109876 L 538.515573 38.109876" class="m-error"/>
+    <path clip-path="url(#p49914ebfa5)" d="M 171.594879 59.236218 L 176.504174 59.236218" class="m-error"/>
+   </g>
+   <g id="line2d_9">
+    <defs>
+     <path d="M 0 5 L 0 -5" id="m8500f76974" class="m-error"/>
+    </defs>
+    <g clip-path="url(#p49914ebfa5)">
+     <use x="69.088803" xlink:href="#m8500f76974" y="38.109876"/>
+     <use x="55.440964" xlink:href="#m8500f76974" y="59.236218"/>
+    </g>
+   </g>
+   <g id="line2d_10">
+    <g clip-path="url(#p49914ebfa5)">
+     <use x="93.635277" xlink:href="#m8500f76974" y="38.109876"/>
+     <use x="70.463406" xlink:href="#m8500f76974" y="59.236218"/>
+    </g>
+   </g>
+   <g id="line2d_11">
+    <g clip-path="url(#p49914ebfa5)">
+     <use x="342.143781" xlink:href="#m8500f76974" y="38.109876"/>
+     <use x="171.594879" xlink:href="#m8500f76974" y="59.236218"/>
+    </g>
+   </g>
+   <g id="line2d_12">
+    <g clip-path="url(#p49914ebfa5)">
+     <use x="538.515573" xlink:href="#m8500f76974" y="38.109876"/>
+     <use x="176.504174" xlink:href="#m8500f76974" y="59.236218"/>
+    </g>
+   </g>
+   <g id="text_10">
+    <text class="m-title" style="text-anchor:middle;" transform="rotate(-0, 295.273516, 21.757969)" x="295.273516" y="21.757969">Stacked plot with errors and full colors</text>
+   </g>
+  </g>
+ </g>
+ <defs>
+  <clipPath id="p49914ebfa5">
+   <rect height="41.830156" width="537.692969" x="26.427031" y="27.757969"/>
+  </clipPath>
+ </defs>
+</svg>
+</div>
+<!-- /content -->
+      </div>
+    </div>
+  </div>
+</article>
+</main>
+</body>
+</html>
index 87863badc262442d776dbbac1e0c533945468c03..b01ee2532eb6480232d581a5bc7e389cc99768b1 100644 (file)
@@ -30,7 +30,7 @@ div.m-plot svg { font-family: DejaVu Sans; }
 </style><div class="m-plot">
 <svg viewBox="0 0 576 113.76">
  <defs>
-  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+  <style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
  </defs>
  <g id="figure_1">
   <g id="axes_1">
@@ -38,122 +38,122 @@ div.m-plot svg { font-family: DejaVu Sans; }
     <path d="M 59.365156 69.588125 L 564.12 69.588125 L 564.12 27.757969 L 59.365156 27.757969 z" class="m-background"/>
    </g>
    <g id="plot1-value0-0"><title>15.0 meters, i guess?</title>
-    <path clip-path="url(#pcce33c7247)" d="M 59.365156 29.659339 L 299.724606 29.659339 L 299.724606 46.560413 L 59.365156 46.560413 z" class="m-bar m-success"/>
+    <path d="M 59.365156 29.659339 L 299.724606 29.659339 L 299.724606 46.560413 L 59.365156 46.560413 z" clip-path="url(#pcce33c7247)" class="m-bar m-success"/>
    </g>
    <g id="plot1-value0-1"><title>30.0 meters, i guess?</title>
-    <path clip-path="url(#pcce33c7247)" d="M 59.365156 50.785681 L 540.084055 50.785681 L 540.084055 67.686754 L 59.365156 67.686754 z" class="m-bar m-success"/>
+    <path d="M 59.365156 50.785681 L 540.084055 50.785681 L 540.084055 67.686754 L 59.365156 67.686754 z" clip-path="url(#pcce33c7247)" class="m-bar m-success"/>
    </g>
    <g id="matplotlib.axis_1">
     <g id="xtick_1">
      <g id="line2d_1">
       <defs>
-       <path d="M 0 0 L 0 3.5" id="m67f9f4ece8" class="m-line"/>
+       <path id="mc4bea1de13" d="M 0 0 L 0 3.5" class="m-line"/>
       </defs>
       <g>
-       <use x="59.365156" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="59.365156" y="69.588125"/>
       </g>
      </g>
      <g id="text_1">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 59.365156, 84.946406)" x="59.365156" y="84.946406">0</text>
+      <text class="m-label" style="text-anchor: middle" x="59.365156" y="84.946406" transform="rotate(-0, 59.365156, 84.946406)">0</text>
      </g>
     </g>
     <g id="xtick_2">
      <g id="line2d_2">
       <g>
-       <use x="139.484973" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="139.484973" y="69.588125"/>
       </g>
      </g>
      <g id="text_2">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 139.484973, 84.946406)" x="139.484973" y="84.946406">5</text>
+      <text class="m-label" style="text-anchor: middle" x="139.484973" y="84.946406" transform="rotate(-0, 139.484973, 84.946406)">5</text>
      </g>
     </g>
     <g id="xtick_3">
      <g id="line2d_3">
       <g>
-       <use x="219.604789" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="219.604789" y="69.588125"/>
       </g>
      </g>
      <g id="text_3">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 219.604789, 84.946406)" x="219.604789" y="84.946406">10</text>
+      <text class="m-label" style="text-anchor: middle" x="219.604789" y="84.946406" transform="rotate(-0, 219.604789, 84.946406)">10</text>
      </g>
     </g>
     <g id="xtick_4">
      <g id="line2d_4">
       <g>
-       <use x="299.724606" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="299.724606" y="69.588125"/>
       </g>
      </g>
      <g id="text_4">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 299.724606, 84.946406)" x="299.724606" y="84.946406">15</text>
+      <text class="m-label" style="text-anchor: middle" x="299.724606" y="84.946406" transform="rotate(-0, 299.724606, 84.946406)">15</text>
      </g>
     </g>
     <g id="xtick_5">
      <g id="line2d_5">
       <g>
-       <use x="379.844422" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="379.844422" y="69.588125"/>
       </g>
      </g>
      <g id="text_5">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 379.844422, 84.946406)" x="379.844422" y="84.946406">20</text>
+      <text class="m-label" style="text-anchor: middle" x="379.844422" y="84.946406" transform="rotate(-0, 379.844422, 84.946406)">20</text>
      </g>
     </g>
     <g id="xtick_6">
      <g id="line2d_6">
       <g>
-       <use x="459.964239" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="459.964239" y="69.588125"/>
       </g>
      </g>
      <g id="text_6">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 459.964239, 84.946406)" x="459.964239" y="84.946406">25</text>
+      <text class="m-label" style="text-anchor: middle" x="459.964239" y="84.946406" transform="rotate(-0, 459.964239, 84.946406)">25</text>
      </g>
     </g>
     <g id="xtick_7">
      <g id="line2d_7">
       <g>
-       <use x="540.084055" xlink:href="#m67f9f4ece8" y="69.588125"/>
+       <use xlink:href="#mc4bea1de13" x="540.084055" y="69.588125"/>
       </g>
      </g>
      <g id="text_7">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 540.084055, 84.946406)" x="540.084055" y="84.946406">30</text>
+      <text class="m-label" style="text-anchor: middle" x="540.084055" y="84.946406" transform="rotate(-0, 540.084055, 84.946406)">30</text>
      </g>
     </g>
     <g id="text_8">
-     <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 311.742578, 99.592344)" x="311.742578" y="99.592344">meters, i guess?</text>
+     <text class="m-label" style="text-anchor: middle" x="311.742578" y="99.592344" transform="rotate(-0, 311.742578, 99.592344)">meters, i guess?</text>
     </g>
    </g>
    <g id="matplotlib.axis_2">
     <g id="ytick_1">
      <g id="line2d_8">
       <defs>
-       <path d="M 0 0 L -3.5 0" id="mb01a5532e0" class="m-line"/>
+       <path id="mae1c673641" d="M 0 0 L -3.5 0" class="m-line"/>
       </defs>
       <g>
-       <use x="59.365156" xlink:href="#mb01a5532e0" y="38.109876"/>
+       <use xlink:href="#mae1c673641" x="59.365156" y="38.109876"/>
       </g>
      </g>
      <g id="text_9">
-      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 52.365156, 42.289017)" x="52.365156" y="42.289017">First</text>
+      <text class="m-label" style="text-anchor: end" x="52.365156" y="42.289017" transform="rotate(-0, 52.365156, 42.289017)">First</text>
      </g>
     </g>
     <g id="ytick_2">
      <g id="line2d_9">
       <g>
-       <use x="59.365156" xlink:href="#mb01a5532e0" y="59.236218"/>
+       <use xlink:href="#mae1c673641" x="59.365156" y="59.236218"/>
       </g>
      </g>
      <g id="text_10">
-      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 52.365156, 63.415358)" x="52.365156" y="63.415358">Second</text>
+      <text class="m-label" style="text-anchor: end" x="52.365156" y="63.415358" transform="rotate(-0, 52.365156, 63.415358)">Second</text>
      </g>
     </g>
    </g>
    <g id="text_11">
-    <text class="m-title" style="text-anchor:middle;" transform="rotate(-0, 311.742578, 21.757969)" x="311.742578" y="21.757969">A plot with a single color</text>
+    <text class="m-title" style="text-anchor: middle" x="311.742578" y="21.757969" transform="rotate(-0, 311.742578, 21.757969)">A plot with a single color</text>
    </g>
   </g>
  </g>
  <defs>
   <clipPath id="pcce33c7247">
-   <rect height="41.830156" width="504.754844" x="59.365156" y="27.757969"/>
+   <rect x="59.365156" y="27.757969" width="504.754844" height="41.830156"/>
   </clipPath>
  </defs>
 </svg>
@@ -163,7 +163,7 @@ div.m-plot svg { font-family: DejaVu Sans; }
 <div class="m-plot">
 <svg viewBox="0 0 324 218.16">
  <defs>
-  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+  <style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
  </defs>
  <g id="figure_1">
   <g id="axes_1">
@@ -171,100 +171,100 @@ div.m-plot svg { font-family: DejaVu Sans; }
     <path d="M 76.642031 173.988125 L 312.12 173.988125 L 312.12 27.757969 L 76.642031 27.757969 z" class="m-background"/>
    </g>
    <g id="plot2-value0-0"><title>3.0 ± 0.1 Mondays</title>
-    <path clip-path="url(#p91542c6844)" d="M 76.642031 34.404794 L 186.936162 34.404794 L 186.936162 72.386653 L 76.642031 72.386653 z" class="m-bar m-success"/>
+    <path d="M 76.642031 34.404794 L 186.936162 34.404794 L 186.936162 72.386653 L 76.642031 72.386653 z" clip-path="url(#p91542c6844)" class="m-bar m-success"/>
    </g>
    <g id="plot2-value0-1"><title>4.0 ± 2.1 Mondays</title>
-    <path clip-path="url(#p91542c6844)" d="M 76.642031 81.882117 L 223.700872 81.882117 L 223.700872 119.863976 L 76.642031 119.863976 z" class="m-bar m-info"/>
+    <path d="M 76.642031 81.882117 L 223.700872 81.882117 L 223.700872 119.863976 L 76.642031 119.863976 z" clip-path="url(#p91542c6844)" class="m-bar m-info"/>
    </g>
    <g id="plot2-value0-2"><title>5.0 ± 1.0 Mondays</title>
-    <path clip-path="url(#p91542c6844)" d="M 76.642031 129.359441 L 260.465582 129.359441 L 260.465582 167.3413 L 76.642031 167.3413 z" class="m-bar m-danger"/>
+    <path d="M 76.642031 129.359441 L 260.465582 129.359441 L 260.465582 167.3413 L 76.642031 167.3413 z" clip-path="url(#p91542c6844)" class="m-bar m-danger"/>
    </g>
    <g id="matplotlib.axis_1">
     <g id="xtick_1">
      <g id="line2d_1">
       <defs>
-       <path d="M 0 0 L 0 3.5" id="m6ad40cba81" class="m-line"/>
+       <path id="m6c4cdc507b" d="M 0 0 L 0 3.5" class="m-line"/>
       </defs>
       <g>
-       <use x="76.642031" xlink:href="#m6ad40cba81" y="173.988125"/>
+       <use xlink:href="#m6c4cdc507b" x="76.642031" y="173.988125"/>
       </g>
      </g>
      <g id="text_1">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 76.642031, 189.346406)" x="76.642031" y="189.346406">0</text>
+      <text class="m-label" style="text-anchor: middle" x="76.642031" y="189.346406" transform="rotate(-0, 76.642031, 189.346406)">0</text>
      </g>
     </g>
     <g id="xtick_2">
      <g id="line2d_2">
       <g>
-       <use x="113.406741" xlink:href="#m6ad40cba81" y="173.988125"/>
+       <use xlink:href="#m6c4cdc507b" x="113.406741" y="173.988125"/>
       </g>
      </g>
      <g id="text_2">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 113.406741, 189.346406)" x="113.406741" y="189.346406">1</text>
+      <text class="m-label" style="text-anchor: middle" x="113.406741" y="189.346406" transform="rotate(-0, 113.406741, 189.346406)">1</text>
      </g>
     </g>
     <g id="xtick_3">
      <g id="line2d_3">
       <g>
-       <use x="150.171452" xlink:href="#m6ad40cba81" y="173.988125"/>
+       <use xlink:href="#m6c4cdc507b" x="150.171452" y="173.988125"/>
       </g>
      </g>
      <g id="text_3">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 150.171452, 189.346406)" x="150.171452" y="189.346406">2</text>
+      <text class="m-label" style="text-anchor: middle" x="150.171452" y="189.346406" transform="rotate(-0, 150.171452, 189.346406)">2</text>
      </g>
     </g>
     <g id="xtick_4">
      <g id="line2d_4">
       <g>
-       <use x="186.936162" xlink:href="#m6ad40cba81" y="173.988125"/>
+       <use xlink:href="#m6c4cdc507b" x="186.936162" y="173.988125"/>
       </g>
      </g>
      <g id="text_4">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 186.936162, 189.346406)" x="186.936162" y="189.346406">3</text>
+      <text class="m-label" style="text-anchor: middle" x="186.936162" y="189.346406" transform="rotate(-0, 186.936162, 189.346406)">3</text>
      </g>
     </g>
     <g id="xtick_5">
      <g id="line2d_5">
       <g>
-       <use x="223.700872" xlink:href="#m6ad40cba81" y="173.988125"/>
+       <use xlink:href="#m6c4cdc507b" x="223.700872" y="173.988125"/>
       </g>
      </g>
      <g id="text_5">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 223.700872, 189.346406)" x="223.700872" y="189.346406">4</text>
+      <text class="m-label" style="text-anchor: middle" x="223.700872" y="189.346406" transform="rotate(-0, 223.700872, 189.346406)">4</text>
      </g>
     </g>
     <g id="xtick_6">
      <g id="line2d_6">
       <g>
-       <use x="260.465582" xlink:href="#m6ad40cba81" y="173.988125"/>
+       <use xlink:href="#m6c4cdc507b" x="260.465582" y="173.988125"/>
       </g>
      </g>
      <g id="text_6">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 260.465582, 189.346406)" x="260.465582" y="189.346406">5</text>
+      <text class="m-label" style="text-anchor: middle" x="260.465582" y="189.346406" transform="rotate(-0, 260.465582, 189.346406)">5</text>
      </g>
     </g>
     <g id="xtick_7">
      <g id="line2d_7">
       <g>
-       <use x="297.230292" xlink:href="#m6ad40cba81" y="173.988125"/>
+       <use xlink:href="#m6c4cdc507b" x="297.230292" y="173.988125"/>
       </g>
      </g>
      <g id="text_7">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 297.230292, 189.346406)" x="297.230292" y="189.346406">6</text>
+      <text class="m-label" style="text-anchor: middle" x="297.230292" y="189.346406" transform="rotate(-0, 297.230292, 189.346406)">6</text>
      </g>
     </g>
     <g id="text_8">
-     <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 194.381016, 203.992344)" x="194.381016" y="203.992344">Mondays</text>
+     <text class="m-label" style="text-anchor: middle" x="194.381016" y="203.992344" transform="rotate(-0, 194.381016, 203.992344)">Mondays</text>
     </g>
    </g>
    <g id="matplotlib.axis_2">
     <g id="ytick_1">
      <g id="line2d_8">
       <defs>
-       <path d="M 0 0 L -3.5 0" id="mb742502bbb" class="m-line"/>
+       <path id="m74ed764a78" d="M 0 0 L -3.5 0" class="m-line"/>
       </defs>
       <g>
-       <use x="76.642031" xlink:href="#mb742502bbb" y="53.395723"/>
+       <use xlink:href="#m74ed764a78" x="76.642031" y="53.395723"/>
       </g>
      </g>
      <g id="text_9">
@@ -275,17 +275,17 @@ div.m-plot svg { font-family: DejaVu Sans; }
     <g id="ytick_2">
      <g id="line2d_9">
       <g>
-       <use x="76.642031" xlink:href="#mb742502bbb" y="100.873047"/>
+       <use xlink:href="#m74ed764a78" x="76.642031" y="100.873047"/>
       </g>
      </g>
      <g id="text_10">
-      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 69.642031, 105.052188)" x="69.642031" y="105.052188">February</text>
+      <text class="m-label" style="text-anchor: end" x="69.642031" y="105.052188" transform="rotate(-0, 69.642031, 105.052188)">February</text>
      </g>
     </g>
     <g id="ytick_3">
      <g id="line2d_10">
       <g>
-       <use x="76.642031" xlink:href="#mb742502bbb" y="148.35037"/>
+       <use xlink:href="#m74ed764a78" x="76.642031" y="148.35037"/>
       </g>
      </g>
      <g id="text_11">
@@ -295,25 +295,25 @@ div.m-plot svg { font-family: DejaVu Sans; }
     </g>
    </g>
    <g id="LineCollection_1">
-    <path clip-path="url(#p91542c6844)" d="M 183.259691 53.395723 L 190.612633 53.395723" class="m-error"/>
-    <path clip-path="url(#p91542c6844)" d="M 146.494981 100.873047 L 300.906763 100.873047" class="m-error"/>
-    <path clip-path="url(#p91542c6844)" d="M 223.700872 148.35037 L 297.230292 148.35037" class="m-error"/>
+    <path d="M 183.259691 53.395723 L 190.612633 53.395723" clip-path="url(#p91542c6844)" class="m-error"/>
+    <path d="M 146.494981 100.873047 L 300.906763 100.873047" clip-path="url(#p91542c6844)" class="m-error"/>
+    <path d="M 223.700872 148.35037 L 297.230292 148.35037" clip-path="url(#p91542c6844)" class="m-error"/>
    </g>
    <g id="line2d_11">
     <defs>
-     <path d="M 0 9.375 L 0 -9.375" id="md2c73e2086" class="m-error"/>
+     <path id="m4a3b31aa5b" d="M 0 9.375 L 0 -9.375" class="m-error"/>
     </defs>
     <g clip-path="url(#p91542c6844)">
-     <use x="183.259691" xlink:href="#md2c73e2086" y="53.395723"/>
-     <use x="146.494981" xlink:href="#md2c73e2086" y="100.873047"/>
-     <use x="223.700872" xlink:href="#md2c73e2086" y="148.35037"/>
+     <use xlink:href="#m4a3b31aa5b" x="183.259691" y="53.395723"/>
+     <use xlink:href="#m4a3b31aa5b" x="146.494981" y="100.873047"/>
+     <use xlink:href="#m4a3b31aa5b" x="223.700872" y="148.35037"/>
     </g>
    </g>
    <g id="line2d_12">
     <g clip-path="url(#p91542c6844)">
-     <use x="190.612633" xlink:href="#md2c73e2086" y="53.395723"/>
-     <use x="300.906763" xlink:href="#md2c73e2086" y="100.873047"/>
-     <use x="297.230292" xlink:href="#md2c73e2086" y="148.35037"/>
+     <use xlink:href="#m4a3b31aa5b" x="190.612633" y="53.395723"/>
+     <use xlink:href="#m4a3b31aa5b" x="300.906763" y="100.873047"/>
+     <use xlink:href="#m4a3b31aa5b" x="297.230292" y="148.35037"/>
     </g>
    </g>
    <g id="text_12">
@@ -325,13 +325,13 @@ div.m-plot svg { font-family: DejaVu Sans; }
     <text class="m-label m-dim" transform="translate(45.380156 159.918346)">hell!</text>
    </g>
    <g id="text_14">
-    <text class="m-title" style="text-anchor:middle;" transform="rotate(-0, 194.381016, 21.757969)" x="194.381016" y="21.757969">Yes.</text>
+    <text class="m-title" style="text-anchor: middle" x="194.381016" y="21.757969" transform="rotate(-0, 194.381016, 21.757969)">Yes.</text>
    </g>
   </g>
  </g>
  <defs>
   <clipPath id="p91542c6844">
-   <rect height="146.230156" width="235.477969" x="76.642031" y="27.757969"/>
+   <rect x="76.642031" y="27.757969" width="235.477969" height="146.230156"/>
   </clipPath>
  </defs>
 </svg>
@@ -340,7 +340,7 @@ div.m-plot svg { font-family: DejaVu Sans; }
 <div class="m-plot">
 <svg viewBox="0 0 576 142.56">
  <defs>
-  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+  <style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
  </defs>
  <g id="figure_1">
   <g id="axes_1">
@@ -348,164 +348,164 @@ div.m-plot svg { font-family: DejaVu Sans; }
     <path d="M 26.561094 98.388125 L 564.12 98.388125 L 564.12 27.757969 L 26.561094 27.757969 z" class="m-background"/>
    </g>
    <g id="plot3-value0-0"><title>111.9 kB</title>
-    <path clip-path="url(#p3be1189609)" d="M 26.561094 30.96843 L 94.510828 30.96843 L 94.510828 49.313926 L 26.561094 49.313926 z" class="m-bar m-success"/>
+    <path d="M 26.561094 30.96843 L 94.510828 30.96843 L 94.510828 49.313926 L 26.561094 49.313926 z" clip-path="url(#p3be1189609)" class="m-bar m-success"/>
    </g>
    <g id="plot3-value0-1"><title>74.4 kB</title>
-    <path clip-path="url(#p3be1189609)" d="M 26.561094 53.900299 L 71.739469 53.900299 L 71.739469 72.245794 L 26.561094 72.245794 z" class="m-bar m-success"/>
+    <path d="M 26.561094 53.900299 L 71.739469 53.900299 L 71.739469 72.245794 L 26.561094 72.245794 z" clip-path="url(#p3be1189609)" class="m-bar m-success"/>
    </g>
    <g id="plot3-value0-2"><title>52.1 kB</title>
-    <path clip-path="url(#p3be1189609)" d="M 26.561094 76.832168 L 58.198101 76.832168 L 58.198101 95.177663 L 26.561094 95.177663 z" class="m-bar m-success"/>
+    <path d="M 26.561094 76.832168 L 58.198101 76.832168 L 58.198101 95.177663 L 26.561094 95.177663 z" clip-path="url(#p3be1189609)" class="m-bar m-success"/>
    </g>
    <g id="plot3-value1-0"><title>731.2 kB</title>
-    <path clip-path="url(#p3be1189609)" d="M 94.510828 30.96843 L 538.521957 30.96843 L 538.521957 49.313926 L 94.510828 49.313926 z" class="m-bar m-info"/>
+    <path d="M 94.510828 30.96843 L 538.521957 30.96843 L 538.521957 49.313926 L 94.510828 49.313926 z" clip-path="url(#p3be1189609)" class="m-bar m-info"/>
    </g>
    <g id="plot3-value1-1"><title>226.3 kB</title>
-    <path clip-path="url(#p3be1189609)" d="M 71.739469 53.900299 L 209.157027 53.900299 L 209.157027 72.245794 L 71.739469 72.245794 z" class="m-bar m-info"/>
+    <path d="M 71.739469 53.900299 L 209.157027 53.900299 L 209.157027 72.245794 L 71.739469 72.245794 z" clip-path="url(#p3be1189609)" class="m-bar m-info"/>
    </g>
    <g id="plot3-value1-2"><title>226.0 kB</title>
-    <path clip-path="url(#p3be1189609)" d="M 58.198101 76.832168 L 195.433489 76.832168 L 195.433489 95.177663 L 58.198101 95.177663 z" class="m-bar m-info"/>
+    <path d="M 58.198101 76.832168 L 195.433489 76.832168 L 195.433489 95.177663 L 58.198101 95.177663 z" clip-path="url(#p3be1189609)" class="m-bar m-info"/>
    </g>
    <g id="matplotlib.axis_1">
     <g id="xtick_1">
      <g id="line2d_1">
       <defs>
-       <path d="M 0 0 L 0 3.5" id="me38155cefd" class="m-line"/>
+       <path id="m0f8c636808" d="M 0 0 L 0 3.5" class="m-line"/>
       </defs>
       <g>
-       <use x="26.561094" xlink:href="#me38155cefd" y="98.388125"/>
+       <use xlink:href="#m0f8c636808" x="26.561094" y="98.388125"/>
       </g>
      </g>
      <g id="text_1">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 26.561094, 113.746406)" x="26.561094" y="113.746406">0</text>
+      <text class="m-label" style="text-anchor: middle" x="26.561094" y="113.746406" transform="rotate(-0, 26.561094, 113.746406)">0</text>
      </g>
     </g>
     <g id="xtick_2">
      <g id="line2d_2">
       <g>
-       <use x="87.284716" xlink:href="#me38155cefd" y="98.388125"/>
+       <use xlink:href="#m0f8c636808" x="87.284716" y="98.388125"/>
       </g>
      </g>
      <g id="text_2">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 87.284716, 113.746406)" x="87.284716" y="113.746406">100</text>
+      <text class="m-label" style="text-anchor: middle" x="87.284716" y="113.746406" transform="rotate(-0, 87.284716, 113.746406)">100</text>
      </g>
     </g>
     <g id="xtick_3">
      <g id="line2d_3">
       <g>
-       <use x="148.008339" xlink:href="#me38155cefd" y="98.388125"/>
+       <use xlink:href="#m0f8c636808" x="148.008339" y="98.388125"/>
       </g>
      </g>
      <g id="text_3">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 148.008339, 113.746406)" x="148.008339" y="113.746406">200</text>
+      <text class="m-label" style="text-anchor: middle" x="148.008339" y="113.746406" transform="rotate(-0, 148.008339, 113.746406)">200</text>
      </g>
     </g>
     <g id="xtick_4">
      <g id="line2d_4">
       <g>
-       <use x="208.731962" xlink:href="#me38155cefd" y="98.388125"/>
+       <use xlink:href="#m0f8c636808" x="208.731962" y="98.388125"/>
       </g>
      </g>
      <g id="text_4">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 208.731962, 113.746406)" x="208.731962" y="113.746406">300</text>
+      <text class="m-label" style="text-anchor: middle" x="208.731962" y="113.746406" transform="rotate(-0, 208.731962, 113.746406)">300</text>
      </g>
     </g>
     <g id="xtick_5">
      <g id="line2d_5">
       <g>
-       <use x="269.455585" xlink:href="#me38155cefd" y="98.388125"/>
+       <use xlink:href="#m0f8c636808" x="269.455585" y="98.388125"/>
       </g>
      </g>
      <g id="text_5">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 269.455585, 113.746406)" x="269.455585" y="113.746406">400</text>
+      <text class="m-label" style="text-anchor: middle" x="269.455585" y="113.746406" transform="rotate(-0, 269.455585, 113.746406)">400</text>
      </g>
     </g>
     <g id="xtick_6">
      <g id="line2d_6">
       <g>
-       <use x="330.179207" xlink:href="#me38155cefd" y="98.388125"/>
+       <use xlink:href="#m0f8c636808" x="330.179207" y="98.388125"/>
       </g>
      </g>
      <g id="text_6">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 330.179207, 113.746406)" x="330.179207" y="113.746406">500</text>
+      <text class="m-label" style="text-anchor: middle" x="330.179207" y="113.746406" transform="rotate(-0, 330.179207, 113.746406)">500</text>
      </g>
     </g>
     <g id="xtick_7">
      <g id="line2d_7">
       <g>
-       <use x="390.90283" xlink:href="#me38155cefd" y="98.388125"/>
+       <use xlink:href="#m0f8c636808" x="390.90283" y="98.388125"/>
       </g>
      </g>
      <g id="text_7">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 390.90283, 113.746406)" x="390.90283" y="113.746406">600</text>
+      <text class="m-label" style="text-anchor: middle" x="390.90283" y="113.746406" transform="rotate(-0, 390.90283, 113.746406)">600</text>
      </g>
     </g>
     <g id="xtick_8">
      <g id="line2d_8">
       <g>
-       <use x="451.626453" xlink:href="#me38155cefd" y="98.388125"/>
+       <use xlink:href="#m0f8c636808" x="451.626453" y="98.388125"/>
       </g>
      </g>
      <g id="text_8">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 451.626453, 113.746406)" x="451.626453" y="113.746406">700</text>
+      <text class="m-label" style="text-anchor: middle" x="451.626453" y="113.746406" transform="rotate(-0, 451.626453, 113.746406)">700</text>
      </g>
     </g>
     <g id="xtick_9">
      <g id="line2d_9">
       <g>
-       <use x="512.350075" xlink:href="#me38155cefd" y="98.388125"/>
+       <use xlink:href="#m0f8c636808" x="512.350075" y="98.388125"/>
       </g>
      </g>
      <g id="text_9">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 512.350075, 113.746406)" x="512.350075" y="113.746406">800</text>
+      <text class="m-label" style="text-anchor: middle" x="512.350075" y="113.746406" transform="rotate(-0, 512.350075, 113.746406)">800</text>
      </g>
     </g>
     <g id="text_10">
-     <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 295.340547, 128.392344)" x="295.340547" y="128.392344">kB</text>
+     <text class="m-label" style="text-anchor: middle" x="295.340547" y="128.392344" transform="rotate(-0, 295.340547, 128.392344)">kB</text>
     </g>
    </g>
    <g id="matplotlib.axis_2">
     <g id="ytick_1">
      <g id="line2d_10">
       <defs>
-       <path d="M 0 0 L -3.5 0" id="m9ccd95d470" class="m-line"/>
+       <path id="m3e62786acc" d="M 0 0 L -3.5 0" class="m-line"/>
       </defs>
       <g>
-       <use x="26.561094" xlink:href="#m9ccd95d470" y="40.141178"/>
+       <use xlink:href="#m3e62786acc" x="26.561094" y="40.141178"/>
       </g>
      </g>
      <g id="text_11">
-      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 19.561094, 44.320319)" x="19.561094" y="44.320319">A</text>
+      <text class="m-label" style="text-anchor: end" x="19.561094" y="44.320319" transform="rotate(-0, 19.561094, 44.320319)">A</text>
      </g>
     </g>
     <g id="ytick_2">
      <g id="line2d_11">
       <g>
-       <use x="26.561094" xlink:href="#m9ccd95d470" y="63.073047"/>
+       <use xlink:href="#m3e62786acc" x="26.561094" y="63.073047"/>
       </g>
      </g>
      <g id="text_12">
-      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 19.561094, 67.252188)" x="19.561094" y="67.252188">B</text>
+      <text class="m-label" style="text-anchor: end" x="19.561094" y="67.252188" transform="rotate(-0, 19.561094, 67.252188)">B</text>
      </g>
     </g>
     <g id="ytick_3">
      <g id="line2d_12">
       <g>
-       <use x="26.561094" xlink:href="#m9ccd95d470" y="86.004916"/>
+       <use xlink:href="#m3e62786acc" x="26.561094" y="86.004916"/>
       </g>
      </g>
      <g id="text_13">
-      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 19.561094, 90.184056)" x="19.561094" y="90.184056">C</text>
+      <text class="m-label" style="text-anchor: end" x="19.561094" y="90.184056" transform="rotate(-0, 19.561094, 90.184056)">C</text>
      </g>
     </g>
    </g>
    <g id="text_14">
-    <text class="m-title" style="text-anchor:middle;" transform="rotate(-0, 295.340547, 21.757969)" x="295.340547" y="21.757969">Stacked plot</text>
+    <text class="m-title" style="text-anchor: middle" x="295.340547" y="21.757969" transform="rotate(-0, 295.340547, 21.757969)">Stacked plot</text>
    </g>
   </g>
  </g>
  <defs>
   <clipPath id="p3be1189609">
-   <rect height="70.630156" width="537.558906" x="26.561094" y="27.757969"/>
+   <rect x="26.561094" y="27.757969" width="537.558906" height="70.630156"/>
   </clipPath>
  </defs>
 </svg>
@@ -513,7 +513,7 @@ div.m-plot svg { font-family: DejaVu Sans; }
 <div class="m-plot">
 <svg viewBox="0 0 576 113.76">
  <defs>
-  <style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;}</style>
+  <style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
  </defs>
  <g id="figure_1">
   <g id="axes_1">
@@ -521,153 +521,153 @@ div.m-plot svg { font-family: DejaVu Sans; }
     <path d="M 26.427031 69.588125 L 564.12 69.588125 L 564.12 27.757969 L 26.427031 27.757969 z" class="m-background"/>
    </g>
    <g id="plot4-value0-0"><title>111.9 ± 25.0 kB</title>
-    <path clip-path="url(#p49914ebfa5)" d="M 26.427031 29.659339 L 81.36204 29.659339 L 81.36204 46.560413 L 26.427031 46.560413 z" class="m-bar m-success"/>
+    <path d="M 26.427031 29.659339 L 81.36204 29.659339 L 81.36204 46.560413 L 26.427031 46.560413 z" clip-path="url(#p49914ebfa5)" class="m-bar m-success"/>
    </g>
    <g id="plot4-value0-1"><title>74.4 ± 15.3 kB</title>
-    <path clip-path="url(#p49914ebfa5)" d="M 26.427031 50.785681 L 62.952185 50.785681 L 62.952185 67.686754 L 26.427031 67.686754 z" class="m-bar m-danger"/>
+    <path d="M 26.427031 50.785681 L 62.952185 50.785681 L 62.952185 67.686754 L 26.427031 67.686754 z" clip-path="url(#p49914ebfa5)" class="m-bar m-danger"/>
    </g>
    <g id="plot4-value1-0"><title>731.2 ± 200.0 kB</title>
-    <path clip-path="url(#p49914ebfa5)" d="M 81.36204 29.659339 L 440.329677 29.659339 L 440.329677 46.560413 L 81.36204 46.560413 z" class="m-bar m-info"/>
+    <path d="M 81.36204 29.659339 L 440.329677 29.659339 L 440.329677 46.560413 L 81.36204 46.560413 z" clip-path="url(#p49914ebfa5)" class="m-bar m-info"/>
    </g>
    <g id="plot4-value1-1"><title>226.3 ± 5.0 kB</title>
-    <path clip-path="url(#p49914ebfa5)" d="M 62.952185 50.785681 L 174.049526 50.785681 L 174.049526 67.686754 L 62.952185 67.686754 z" class="m-bar m-primary"/>
+    <path d="M 62.952185 50.785681 L 174.049526 50.785681 L 174.049526 67.686754 L 62.952185 67.686754 z" clip-path="url(#p49914ebfa5)" class="m-bar m-primary"/>
    </g>
    <g id="matplotlib.axis_1">
     <g id="xtick_1">
      <g id="line2d_1">
       <defs>
-       <path d="M 0 0 L 0 3.5" id="m61481b8dfb" class="m-line"/>
+       <path id="m662ed05794" d="M 0 0 L 0 3.5" class="m-line"/>
       </defs>
       <g>
-       <use x="26.427031" xlink:href="#m61481b8dfb" y="69.588125"/>
+       <use xlink:href="#m662ed05794" x="26.427031" y="69.588125"/>
       </g>
      </g>
      <g id="text_1">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 26.427031, 84.946406)" x="26.427031" y="84.946406">0</text>
+      <text class="m-label" style="text-anchor: middle" x="26.427031" y="84.946406" transform="rotate(-0, 26.427031, 84.946406)">0</text>
      </g>
     </g>
     <g id="xtick_2">
      <g id="line2d_2">
       <g>
-       <use x="124.612927" xlink:href="#m61481b8dfb" y="69.588125"/>
+       <use xlink:href="#m662ed05794" x="124.612927" y="69.588125"/>
       </g>
      </g>
      <g id="text_2">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 124.612927, 84.946406)" x="124.612927" y="84.946406">200</text>
+      <text class="m-label" style="text-anchor: middle" x="124.612927" y="84.946406" transform="rotate(-0, 124.612927, 84.946406)">200</text>
      </g>
     </g>
     <g id="xtick_3">
      <g id="line2d_3">
       <g>
-       <use x="222.798824" xlink:href="#m61481b8dfb" y="69.588125"/>
+       <use xlink:href="#m662ed05794" x="222.798824" y="69.588125"/>
       </g>
      </g>
      <g id="text_3">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 222.798824, 84.946406)" x="222.798824" y="84.946406">400</text>
+      <text class="m-label" style="text-anchor: middle" x="222.798824" y="84.946406" transform="rotate(-0, 222.798824, 84.946406)">400</text>
      </g>
     </g>
     <g id="xtick_4">
      <g id="line2d_4">
       <g>
-       <use x="320.98472" xlink:href="#m61481b8dfb" y="69.588125"/>
+       <use xlink:href="#m662ed05794" x="320.98472" y="69.588125"/>
       </g>
      </g>
      <g id="text_4">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 320.98472, 84.946406)" x="320.98472" y="84.946406">600</text>
+      <text class="m-label" style="text-anchor: middle" x="320.98472" y="84.946406" transform="rotate(-0, 320.98472, 84.946406)">600</text>
      </g>
     </g>
     <g id="xtick_5">
      <g id="line2d_5">
       <g>
-       <use x="419.170616" xlink:href="#m61481b8dfb" y="69.588125"/>
+       <use xlink:href="#m662ed05794" x="419.170616" y="69.588125"/>
       </g>
      </g>
      <g id="text_5">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 419.170616, 84.946406)" x="419.170616" y="84.946406">800</text>
+      <text class="m-label" style="text-anchor: middle" x="419.170616" y="84.946406" transform="rotate(-0, 419.170616, 84.946406)">800</text>
      </g>
     </g>
     <g id="xtick_6">
      <g id="line2d_6">
       <g>
-       <use x="517.356512" xlink:href="#m61481b8dfb" y="69.588125"/>
+       <use xlink:href="#m662ed05794" x="517.356512" y="69.588125"/>
       </g>
      </g>
      <g id="text_6">
-      <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 517.356512, 84.946406)" x="517.356512" y="84.946406">1000</text>
+      <text class="m-label" style="text-anchor: middle" x="517.356512" y="84.946406" transform="rotate(-0, 517.356512, 84.946406)">1000</text>
      </g>
     </g>
     <g id="text_7">
-     <text class="m-label" style="text-anchor:middle;" transform="rotate(-0, 295.273516, 99.592344)" x="295.273516" y="99.592344">kB</text>
+     <text class="m-label" style="text-anchor: middle" x="295.273516" y="99.592344" transform="rotate(-0, 295.273516, 99.592344)">kB</text>
     </g>
    </g>
    <g id="matplotlib.axis_2">
     <g id="ytick_1">
      <g id="line2d_7">
       <defs>
-       <path d="M 0 0 L -3.5 0" id="m6e7aba3b4c" class="m-line"/>
+       <path id="m104b56c38f" d="M 0 0 L -3.5 0" class="m-line"/>
       </defs>
       <g>
-       <use x="26.427031" xlink:href="#m6e7aba3b4c" y="38.109876"/>
+       <use xlink:href="#m104b56c38f" x="26.427031" y="38.109876"/>
       </g>
      </g>
      <g id="text_8">
-      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 19.427031, 42.289017)" x="19.427031" y="42.289017">A</text>
+      <text class="m-label" style="text-anchor: end" x="19.427031" y="42.289017" transform="rotate(-0, 19.427031, 42.289017)">A</text>
      </g>
     </g>
     <g id="ytick_2">
      <g id="line2d_8">
       <g>
-       <use x="26.427031" xlink:href="#m6e7aba3b4c" y="59.236218"/>
+       <use xlink:href="#m104b56c38f" x="26.427031" y="59.236218"/>
       </g>
      </g>
      <g id="text_9">
-      <text class="m-label" style="text-anchor:end;" transform="rotate(-0, 19.427031, 63.415358)" x="19.427031" y="63.415358">B</text>
+      <text class="m-label" style="text-anchor: end" x="19.427031" y="63.415358" transform="rotate(-0, 19.427031, 63.415358)">B</text>
      </g>
     </g>
    </g>
    <g id="LineCollection_1">
-    <path clip-path="url(#p49914ebfa5)" d="M 69.088803 38.109876 L 93.635277 38.109876" class="m-error"/>
-    <path clip-path="url(#p49914ebfa5)" d="M 55.440964 59.236218 L 70.463406 59.236218" class="m-error"/>
-   </g>
-   <g id="LineCollection_2">
-    <path clip-path="url(#p49914ebfa5)" d="M 342.143781 38.109876 L 538.515573 38.109876" class="m-error"/>
-    <path clip-path="url(#p49914ebfa5)" d="M 171.594879 59.236218 L 176.504174 59.236218" class="m-error"/>
+    <path d="M 69.088803 38.109876 L 93.635277 38.109876" clip-path="url(#p49914ebfa5)" class="m-error"/>
+    <path d="M 55.440964 59.236218 L 70.463406 59.236218" clip-path="url(#p49914ebfa5)" class="m-error"/>
    </g>
    <g id="line2d_9">
     <defs>
-     <path d="M 0 5 L 0 -5" id="m8500f76974" class="m-error"/>
+     <path id="m26893248e6" d="M 0 5 L 0 -5" class="m-error"/>
     </defs>
     <g clip-path="url(#p49914ebfa5)">
-     <use x="69.088803" xlink:href="#m8500f76974" y="38.109876"/>
-     <use x="55.440964" xlink:href="#m8500f76974" y="59.236218"/>
+     <use xlink:href="#m26893248e6" x="69.088803" y="38.109876"/>
+     <use xlink:href="#m26893248e6" x="55.440964" y="59.236218"/>
     </g>
    </g>
    <g id="line2d_10">
     <g clip-path="url(#p49914ebfa5)">
-     <use x="93.635277" xlink:href="#m8500f76974" y="38.109876"/>
-     <use x="70.463406" xlink:href="#m8500f76974" y="59.236218"/>
+     <use xlink:href="#m26893248e6" x="93.635277" y="38.109876"/>
+     <use xlink:href="#m26893248e6" x="70.463406" y="59.236218"/>
     </g>
    </g>
+   <g id="LineCollection_2">
+    <path d="M 342.143781 38.109876 L 538.515573 38.109876" clip-path="url(#p49914ebfa5)" class="m-error"/>
+    <path d="M 171.594879 59.236218 L 176.504174 59.236218" clip-path="url(#p49914ebfa5)" class="m-error"/>
+   </g>
    <g id="line2d_11">
     <g clip-path="url(#p49914ebfa5)">
-     <use x="342.143781" xlink:href="#m8500f76974" y="38.109876"/>
-     <use x="171.594879" xlink:href="#m8500f76974" y="59.236218"/>
+     <use xlink:href="#m26893248e6" x="342.143781" y="38.109876"/>
+     <use xlink:href="#m26893248e6" x="171.594879" y="59.236218"/>
     </g>
    </g>
    <g id="line2d_12">
     <g clip-path="url(#p49914ebfa5)">
-     <use x="538.515573" xlink:href="#m8500f76974" y="38.109876"/>
-     <use x="176.504174" xlink:href="#m8500f76974" y="59.236218"/>
+     <use xlink:href="#m26893248e6" x="538.515573" y="38.109876"/>
+     <use xlink:href="#m26893248e6" x="176.504174" y="59.236218"/>
     </g>
    </g>
    <g id="text_10">
-    <text class="m-title" style="text-anchor:middle;" transform="rotate(-0, 295.273516, 21.757969)" x="295.273516" y="21.757969">Stacked plot with errors and full colors</text>
+    <text class="m-title" style="text-anchor: middle" x="295.273516" y="21.757969" transform="rotate(-0, 295.273516, 21.757969)">Stacked plot with errors and full colors</text>
    </g>
   </g>
  </g>
  <defs>
   <clipPath id="p49914ebfa5">
-   <rect height="41.830156" width="537.692969" x="26.427031" y="27.757969"/>
+   <rect x="26.427031" y="27.757969" width="537.692969" height="41.830156"/>
   </clipPath>
  </defs>
 </svg>
index 5211ad73cc1b6f9a992668536e3b7e2b6239e10c..aaaea2b5efca69289087b646857dc0314ac6eed0 100644 (file)
@@ -42,8 +42,10 @@ class Plots(PelicanPluginTestCase):
         })
 
         # FUCK this is annoying
-        if LooseVersion(matplotlib.__version__) >= LooseVersion('3.4'):
+        if LooseVersion(matplotlib.__version__) >= LooseVersion('3.5'):
             self.assertEqual(*self.actual_expected_contents('page.html'))
+        elif LooseVersion(matplotlib.__version__) >= LooseVersion('3.4'):
+            self.assertEqual(*self.actual_expected_contents('page.html', 'page-34.html'))
         elif LooseVersion(matplotlib.__version__) >= LooseVersion('3.2'):
             self.assertEqual(*self.actual_expected_contents('page.html', 'page-32.html'))
         elif LooseVersion(matplotlib.__version__) >= LooseVersion('3.0'):