Unverified Commit fd11aa31 authored by Maxim Belkin's avatar Maxim Belkin Committed by GitHub
Browse files

Update figures in NumPy episode. Script to optimize SVG files (#719)

parent 0a9f7fea
...@@ -204,9 +204,9 @@ that can be called upon when needed. ...@@ -204,9 +204,9 @@ that can be called upon when needed.
## Loading data into Python ## Loading data into Python
In order to load our inflammation data, we need to access In order to load our inflammation data, we need to access
([import]({{ page.root }}/reference/#import) in Python terminology) a library called ([import]({{ page.root }}/reference/#import) in Python terminology) a library called
[NumPy](http://docs.scipy.org/doc/numpy/ "NumPy Documentation") which stands for Numerical Python. [NumPy](http://docs.scipy.org/doc/numpy/ "NumPy Documentation") which stands for Numerical Python.
In general you should use this library if you want to do fancy things with numbers, In general you should use this library if you want to do fancy things with numbers,
especially if you have matrices or arrays. We can import NumPy using: especially if you have matrices or arrays. We can import NumPy using:
~~~ ~~~
...@@ -270,7 +270,7 @@ when there's nothing interesting after the decimal point. ...@@ -270,7 +270,7 @@ when there's nothing interesting after the decimal point.
> However, shortcuts such as `import numpy as np` are frequently used. Importing NumPy this way means that after the > However, shortcuts such as `import numpy as np` are frequently used. Importing NumPy this way means that after the
> inital import, rather than writing `numpy.loadtxt(...)`, you can now write `np.loadtxt(...)`. Some > inital import, rather than writing `numpy.loadtxt(...)`, you can now write `np.loadtxt(...)`. Some
> people prefer this as it is quicker to type and results in shorter lines of code - especially for libraries > people prefer this as it is quicker to type and results in shorter lines of code - especially for libraries
> with long names! You will frequently see Python code online using a NumPy function with `np`, and it's > with long names! You will frequently see Python code online using a NumPy function with `np`, and it's
> because they've used this shortcut. It makes no difference which approach you choose to take, but you must be > because they've used this shortcut. It makes no difference which approach you choose to take, but you must be
> consistent as if you use `import numpy as np` then `numpy.loadtxt(...)` will not work, and you must use `np.loadtxt(...)` > consistent as if you use `import numpy as np` then `numpy.loadtxt(...)` will not work, and you must use `np.loadtxt(...)`
> instead. Because of this, when working with other people it is important you agree on how libraries are imported. > instead. Because of this, when working with other people it is important you agree on how libraries are imported.
...@@ -737,7 +737,7 @@ matplotlib.pyplot.show() ...@@ -737,7 +737,7 @@ matplotlib.pyplot.show()
~~~ ~~~
{: .language-python} {: .language-python}
![Heatmap of the Data](../fig/01-numpy_71_0.png) ![Heatmap of the Data](../fig/inflammation-01-imshow.svg)
Blue pixels in this heat map represent low values, while yellow pixels represent high values. As we Blue pixels in this heat map represent low values, while yellow pixels represent high values. As we
can see, inflammation rises and falls over a 40-day period. can see, inflammation rises and falls over a 40-day period.
...@@ -768,7 +768,7 @@ matplotlib.pyplot.show() ...@@ -768,7 +768,7 @@ matplotlib.pyplot.show()
~~~ ~~~
{: .language-python} {: .language-python}
![Average Inflammation Over Time](../fig/01-numpy_73_0.png) ![Average Inflammation Over Time](../fig/inflammation-01-average.svg)
Here, we have put the average per day across all patients in the variable `ave_inflammation`, then Here, we have put the average per day across all patients in the variable `ave_inflammation`, then
asked `matplotlib.pyplot` to create and display a line graph of those values. The result is a asked `matplotlib.pyplot` to create and display a line graph of those values. The result is a
...@@ -781,7 +781,7 @@ matplotlib.pyplot.show() ...@@ -781,7 +781,7 @@ matplotlib.pyplot.show()
~~~ ~~~
{: .language-python} {: .language-python}
![Maximum Value Along The First Axis](../fig/01-numpy_75_1.png) ![Maximum Value Along The First Axis](../fig/inflammation-01-maximum.svg)
~~~ ~~~
min_plot = matplotlib.pyplot.plot(numpy.min(data, axis=0)) min_plot = matplotlib.pyplot.plot(numpy.min(data, axis=0))
...@@ -789,7 +789,7 @@ matplotlib.pyplot.show() ...@@ -789,7 +789,7 @@ matplotlib.pyplot.show()
~~~ ~~~
{: .language-python} {: .language-python}
![Minimum Value Along The First Axis](../fig/01-numpy_75_3.png) ![Minimum Value Along The First Axis](../fig/inflammation-01-minimum.svg)
The maximum value rises and falls smoothly, while the minimum seems to be a step function. Neither The maximum value rises and falls smoothly, while the minimum seems to be a step function. Neither
trend seems particularly likely, so either there's a mistake in our calculations or something is trend seems particularly likely, so either there's a mistake in our calculations or something is
...@@ -836,7 +836,7 @@ matplotlib.pyplot.show() ...@@ -836,7 +836,7 @@ matplotlib.pyplot.show()
~~~ ~~~
{: .language-python} {: .language-python}
![The Previous Plots as Subplots](../fig/01-numpy_80_0.png) ![The Previous Plots as Subplots](../fig/inflammation-01-group-plot.svg)
The [call]({{ page.root }}/reference/#function-call) to `loadtxt` reads our data, The [call]({{ page.root }}/reference/#function-call) to `loadtxt` reads our data,
and the rest of the program tells the plotting library and the rest of the program tells the plotting library
...@@ -1035,7 +1035,7 @@ the graphs will actually be squeezed together more closely.) ...@@ -1035,7 +1035,7 @@ the graphs will actually be squeezed together more closely.)
> > matplotlib.pyplot.show() > > matplotlib.pyplot.show()
> > ~~~ > > ~~~
> > {: .language-python} > > {: .language-python}
> ![Plot with step lines](../fig/01-numpy_exercise_0.png) > ![Plot with step lines](../fig/inflammation-01-line-styles.svg)
> {: .solution} > {: .solution}
{: .challenge} {: .challenge}
......
#!/usr/bin/env python3
"""
Generate figures used in the lesson episodes.
Usage: ./generate_figures.py
"""
try:
import numpy
import matplotlib.pyplot
except ImportError:
print("Failed to load NumPy and/or Matplotlib", file=sys.stderr)
exit(1)
# Configure Matplotlib to not convert text to outlines
# All settings: matplotlib.rcParams or matplotlib.pyplot.rcParams
matplotlib.pyplot.rcParams['svg.fonttype'] = 'none'
# Load data
data = numpy.loadtxt(fname="../data/inflammation-01.csv", delimiter=",")
# Episode 1
## Visualizing data
matplotlib.pyplot.imshow(data)
matplotlib.pyplot.savefig("inflammation-01-imshow.svg")
matplotlib.pyplot.close()
matplotlib.pyplot.plot(numpy.mean(data, axis=0))
matplotlib.pyplot.savefig("inflammation-01-average.svg")
matplotlib.pyplot.close()
matplotlib.pyplot.plot(numpy.max(data, axis=0))
matplotlib.pyplot.savefig("inflammation-01-maximum.svg")
matplotlib.pyplot.close()
matplotlib.pyplot.plot(numpy.min(data, axis=0))
matplotlib.pyplot.savefig("inflammation-01-minimum.svg")
matplotlib.pyplot.close()
## Grouping plots
fig = matplotlib.pyplot.figure(figsize=(10.0, 3.0))
axes1 = fig.add_subplot(1, 3, 1)
axes2 = fig.add_subplot(1, 3, 2)
axes3 = fig.add_subplot(1, 3, 3)
axes1.set_ylabel('average')
axes1.plot(numpy.mean(data, axis=0))
axes2.set_ylabel('max')
axes2.plot(numpy.max(data, axis=0))
axes3.set_ylabel('min')
axes3.plot(numpy.min(data, axis=0))
fig.tight_layout()
matplotlib.pyplot.savefig("inflammation-01-group-plot.svg")
matplotlib.pyplot.close(fig)
## Exercise: Drawing Straight Lines
fig = matplotlib.pyplot.figure(figsize=(10.0, 3.0))
axes1 = fig.add_subplot(1, 3, 1)
axes2 = fig.add_subplot(1, 3, 2)
axes3 = fig.add_subplot(1, 3, 3)
axes1.set_ylabel('average')
axes1.plot(numpy.mean(data, axis=0), drawstyle='steps-mid')
axes2.set_ylabel('max')
axes2.plot(numpy.max(data, axis=0), drawstyle='steps-mid')
axes3.set_ylabel('min')
axes3.plot(numpy.min(data, axis=0), drawstyle='steps-mid')
fig.tight_layout()
matplotlib.pyplot.savefig("inflammation-01-line-styles.svg")
matplotlib.pyplot.close(fig)
<svg width="460.8pt" height="345.6pt" version="1.1" viewBox="0 0 460.8 345.6" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;white-space:pre;}</style>
</defs>
<path d="m0 345.6h460.8v-345.6h-460.8z" fill="#ffffff"/>
<path d="m57.6 307.6h357.1v-266.1h-357.1z" fill="#ffffff"/>
<defs>
<path id="a" d="m0 0v3.5" stroke="#000000" />
</defs>
<use x="73.832727" y="307.584" stroke="#000000" xlink:href="#a"/>
<text x="73.832727" y="322.182437" font-size="10px" text-anchor="middle">0</text>
<use x="115.455105" y="307.584" stroke="#000000" xlink:href="#a"/>
<text x="115.455105" y="322.182437" font-size="10px" text-anchor="middle">5</text>
<use x="157.077483" y="307.584" stroke="#000000" xlink:href="#a"/>
<text x="157.077483" y="322.182437" font-size="10px" text-anchor="middle">10</text>
<use x="198.69986" y="307.584" stroke="#000000" xlink:href="#a"/>
<text x="198.69986" y="322.182437" font-size="10px" text-anchor="middle">15</text>
<use x="240.322238" y="307.584" stroke="#000000" xlink:href="#a"/>
<text x="240.322238" y="322.182437" font-size="10px" text-anchor="middle">20</text>
<use x="281.944615" y="307.584" stroke="#000000" xlink:href="#a"/>
<text x="281.944615" y="322.182437" font-size="10px" text-anchor="middle">25</text>
<use x="323.566993" y="307.584" stroke="#000000" xlink:href="#a"/>
<text x="323.566993" y="322.182437" font-size="10px" text-anchor="middle">30</text>
<use x="365.189371" y="307.584" stroke="#000000" xlink:href="#a"/>
<text x="365.189371" y="322.182437" font-size="10px" text-anchor="middle">35</text>
<use x="406.811748" y="307.584" stroke="#000000" xlink:href="#a"/>
<text x="406.811748" y="322.182437" font-size="10px" text-anchor="middle">40</text>
<defs>
<path id="b" d="m0 0h-3.5" stroke="#000000" />
</defs>
<use x="57.6" y="295.488" stroke="#000000" xlink:href="#b"/>
<text x="50.6" y="299.287219" font-size="10px" text-anchor="end">0</text>
<use x="57.6" y="258.971774" stroke="#000000" xlink:href="#b"/>
<text x="50.6" y="262.770992" font-size="10px" text-anchor="end">2</text>
<use x="57.6" y="222.455547" stroke="#000000" xlink:href="#b"/>
<text x="50.6" y="226.254766" font-size="10px" text-anchor="end">4</text>
<use x="57.6" y="185.939321" stroke="#000000" xlink:href="#b"/>
<text x="50.6" y="189.73854" font-size="10px" text-anchor="end">6</text>
<use x="57.6" y="149.423094" stroke="#000000" xlink:href="#b"/>
<text x="50.6" y="153.222313" font-size="10px" text-anchor="end">8</text>
<use x="57.6" y="112.906868" stroke="#000000" xlink:href="#b"/>
<text x="50.6" y="116.706087" font-size="10px" text-anchor="end">10</text>
<use x="57.6" y="76.390642" stroke="#000000" xlink:href="#b"/>
<text x="50.6" y="80.18986" font-size="10px" text-anchor="end">12</text>
<path d="m73.83 295.5 8.324-8.216 8.324-12.17 8.324-11.56 8.324-12.48 8.324-13.08 8.324-11.87 8.324-1.522 8.324-24.65 8.324-5.173 8.324-7.912 8.324 0.9129 8.324-44.73 8.324 11.26 8.324-11.56 8.324-20.69 8.324-1.522 8.324-19.17 8.324-17.04 8.324-14.3 8.324-16.43 8.324 23.43 8.324 17.04 8.324 15.82 8.324 3.043 8.324 24.34 8.324-8.825 8.324 34.69 8.324-1.522 8.324 13.69 8.324 9.433 8.324 2.13 8.324 15.22 8.324 27.69 8.324 5.477 8.324-4.869 8.324 19.78 8.324 17.95 8.324 6.695 8.324 10.35" clip-path="url(#c)" fill="none" stroke="#1f77b4" stroke-linecap="square" stroke-width="1.5"/>
<path d="m57.6 307.6v-266.1" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m414.7 307.6v-266.1" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m57.6 307.6h357.1" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m57.6 41.47h357.1" fill="none" stroke="#000000" stroke-linecap="square" />
<defs>
<clipPath id="c">
<rect x="57.6" y="41.47" width="357.1" height="266.1"/>
</clipPath>
</defs>
</svg>
<svg width="720pt" height="216pt" version="1.1" viewBox="0 0 720 216" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;white-space:pre;}</style>
</defs>
<path d="m0 216h720v-216h-720z" fill="#ffffff"/>
<path d="m44.57 188.1h189.2v-177.3h-189.2z" fill="#ffffff"/>
<defs>
<path id="b" d="m0 0v3.5" stroke="#000000" />
</defs>
<use x="53.168378" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="53.168378" y="202.718437" font-size="10px" text-anchor="middle">0</text>
<use x="97.262622" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="97.262622" y="202.718437" font-size="10px" text-anchor="middle">10</text>
<use x="141.356866" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="141.356866" y="202.718437" font-size="10px" text-anchor="middle">20</text>
<use x="185.45111" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="185.45111" y="202.718437" font-size="10px" text-anchor="middle">30</text>
<use x="229.545354" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="229.545354" y="202.718437" font-size="10px" text-anchor="middle">40</text>
<defs>
<path id="a" d="m0 0h-3.5" stroke="#000000" />
</defs>
<use x="44.57" y="180.06" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="183.859219" font-size="10px" text-anchor="end">0</text>
<use x="44.57" y="155.727925" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="159.527143" font-size="10px" text-anchor="end">2</text>
<use x="44.57" y="131.395849" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="135.195068" font-size="10px" text-anchor="end">4</text>
<use x="44.57" y="107.063774" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="110.862992" font-size="10px" text-anchor="end">6</text>
<use x="44.57" y="82.731698" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="86.530917" font-size="10px" text-anchor="end">8</text>
<use x="44.57" y="58.399623" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="62.198841" font-size="10px" text-anchor="end">10</text>
<use x="44.57" y="34.067547" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="37.866766" font-size="10px" text-anchor="end">12</text>
<text transform="rotate(-90 18.77 99.46)" x="18.765312" y="99.46" font-size="10px" text-anchor="middle">average</text>
<path d="m53.17 180.1 4.409-5.475 4.409-8.111 4.409-7.705 4.409-8.313 4.409-8.719 4.409-7.908 4.409-1.014 4.409-16.42 4.409-3.447 4.409-5.272 4.409 0.6083 4.409-29.81 4.409 7.502 4.409-7.705 4.409-13.79 4.409-1.014 4.409-12.77 4.409-11.35 4.409-9.53 4.409-10.95 4.409 15.61 4.409 11.35 4.409 10.54 4.409 2.028 4.409 16.22 4.409-5.88 4.409 23.12 4.409-1.014 4.409 9.125 4.409 6.286 4.409 1.419 4.409 10.14 4.409 18.45 4.409 3.65 4.409-3.244 4.409 13.18 4.409 11.96 4.409 4.461 4.409 6.894" clip-path="url(#d)" fill="none" stroke="#1f77b4" stroke-linecap="square" stroke-width="1.5"/>
<path d="m44.57 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m233.7 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m44.57 188.1h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m44.57 10.8h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m281 188.1h189.2v-177.3h-189.2z" fill="#ffffff"/>
<use x="289.568378" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="289.568378" y="202.718437" font-size="10px" text-anchor="middle">0</text>
<use x="333.662622" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="333.662622" y="202.718437" font-size="10px" text-anchor="middle">10</text>
<use x="377.756866" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="377.756866" y="202.718437" font-size="10px" text-anchor="middle">20</text>
<use x="421.85111" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="421.85111" y="202.718437" font-size="10px" text-anchor="middle">30</text>
<use x="465.945354" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="465.945354" y="202.718437" font-size="10px" text-anchor="middle">40</text>
<use x="280.97" y="180.06" stroke="#000000" xlink:href="#a"/>
<text x="273.97" y="183.859219" font-size="10px" text-anchor="end">0</text>
<use x="280.97" y="139.76" stroke="#000000" xlink:href="#a"/>
<text x="273.97" y="143.559219" font-size="10px" text-anchor="end">5</text>
<use x="280.97" y="99.46" stroke="#000000" xlink:href="#a"/>
<text x="273.97" y="103.259219" font-size="10px" text-anchor="end">10</text>
<use x="280.97" y="59.16" stroke="#000000" xlink:href="#a"/>
<text x="273.97" y="62.959219" font-size="10px" text-anchor="end">15</text>
<use x="280.97" y="18.86" stroke="#000000" xlink:href="#a"/>
<text x="273.97" y="22.659219" font-size="10px" text-anchor="end">20</text>
<text transform="rotate(-90 255.2 99.46)" x="255.165312" y="99.46" font-size="10px" text-anchor="middle">max</text>
<path d="m289.6 180.1 88.19-161.2 83.78 153.1" clip-path="url(#e)" fill="none" stroke="#1f77b4" stroke-linecap="square" stroke-width="1.5"/>
<path d="m281 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m470.1 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m281 188.1h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m281 10.8h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m517.4 188.1h189.2v-177.3h-189.2z" fill="#ffffff"/>
<use x="525.968378" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="525.968378" y="202.718437" font-size="10px" text-anchor="middle">0</text>
<use x="570.062622" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="570.062622" y="202.718437" font-size="10px" text-anchor="middle">10</text>
<use x="614.156866" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="614.156866" y="202.718437" font-size="10px" text-anchor="middle">20</text>
<use x="658.25111" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="658.25111" y="202.718437" font-size="10px" text-anchor="middle">30</text>
<use x="702.345354" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="702.345354" y="202.718437" font-size="10px" text-anchor="middle">40</text>
<use x="517.37" y="180.06" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="183.859219" font-size="10px" text-anchor="end">0</text>
<use x="517.37" y="147.82" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="151.619219" font-size="10px" text-anchor="end">1</text>
<use x="517.37" y="115.58" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="119.379219" font-size="10px" text-anchor="end">2</text>
<use x="517.37" y="83.34" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="87.139219" font-size="10px" text-anchor="end">3</text>
<use x="517.37" y="51.1" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="54.899219" font-size="10px" text-anchor="end">4</text>
<use x="517.37" y="18.86" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="22.659219" font-size="10px" text-anchor="end">5</text>
<text transform="rotate(-90 497.9 99.46)" x="497.927812" y="99.46" font-size="10px" text-anchor="middle">min</text>
<path d="m526 180.1h4.409 4.409 4.409l4.409-32.24h4.409 4.409 4.409l4.409-32.24h4.409 4.409 4.409l4.409-32.24h4.409 4.409 4.409l8.819-64.48h4.409 4.409 4.409l4.409 32.24h4.409 4.409 4.409l4.409 32.24h4.409 4.409 4.409l4.409 32.24h4.409 4.409 4.409l4.409 32.24h4.409 4.409 4.409l4.409 32.24h4.409 4.409" clip-path="url(#c)" fill="none" stroke="#1f77b4" stroke-linecap="square" stroke-width="1.5"/>
<path d="m517.4 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m706.5 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m517.4 188.1h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m517.4 10.8h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<defs>
<clipPath id="d">
<rect x="44.57" y="10.8" width="189.2" height="177.3"/>
</clipPath>
<clipPath id="e">
<rect x="281" y="10.8" width="189.2" height="177.3"/>
</clipPath>
<clipPath id="c">
<rect x="517.4" y="10.8" width="189.2" height="177.3"/>
</clipPath>
</defs>
</svg>
<svg width="460.8pt" height="345.6pt" version="1.1" viewBox="0 0 460.8 345.6" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;white-space:pre;}</style>
</defs>
<path d="m0 345.6h460.8v-345.6h-460.8z" fill="#ffffff"/>
<path d="m147.5 307.6h177.4v-266.1h-177.4z" fill="#ffffff"/>
<g clip-path="url(#c)">
<image transform="scale(1 -1)translate(0 -266.4)" x="147.5" y="-41.18" width="177.8" height="266.4" xlink:href="data:image/png;base64, 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"/>
</g>
<defs>
<path id="b" d="m0 0v3.5" stroke="#000000" />
</defs>
<use x="149.6736" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="149.6736" y="322.182437" font-size="10px" text-anchor="middle">0</text>
<use x="194.0256" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="194.0256" y="322.182437" font-size="10px" text-anchor="middle">10</text>
<use x="238.3776" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="238.3776" y="322.182437" font-size="10px" text-anchor="middle">20</text>
<use x="282.7296" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="282.7296" y="322.182437" font-size="10px" text-anchor="middle">30</text>
<defs>
<path id="a" d="m0 0h-3.5" stroke="#000000" />
</defs>
<use x="147.456" y="43.6896" stroke="#000000" xlink:href="#a"/>
<text x="140.456" y="47.488819" font-size="10px" text-anchor="end">0</text>
<use x="147.456" y="88.0416" stroke="#000000" xlink:href="#a"/>
<text x="140.456" y="91.840819" font-size="10px" text-anchor="end">10</text>
<use x="147.456" y="132.3936" stroke="#000000" xlink:href="#a"/>
<text x="140.456" y="136.192819" font-size="10px" text-anchor="end">20</text>
<use x="147.456" y="176.7456" stroke="#000000" xlink:href="#a"/>
<text x="140.456" y="180.544819" font-size="10px" text-anchor="end">30</text>
<use x="147.456" y="221.0976" stroke="#000000" xlink:href="#a"/>
<text x="140.456" y="224.896819" font-size="10px" text-anchor="end">40</text>
<use x="147.456" y="265.4496" stroke="#000000" xlink:href="#a"/>
<text x="140.456" y="269.248819" font-size="10px" text-anchor="end">50</text>
<path d="m147.5 307.6v-266.1" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m324.9 307.6v-266.1" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m147.5 307.6h177.4" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m147.5 41.47h177.4" fill="none" stroke="#000000" stroke-linecap="square" />
<defs>
<clipPath id="c">
<rect x="147.5" y="41.47" width="177.4" height="266.1"/>
</clipPath>
</defs>
</svg>
<svg width="720pt" height="216pt" version="1.1" viewBox="0 0 720 216" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;white-space:pre;}</style>
</defs>
<path d="m0 216h720v-216h-720z" fill="#ffffff"/>
<path d="m44.57 188.1h189.2v-177.3h-189.2z" fill="#ffffff"/>
<defs>
<path id="b" d="m0 0v3.5" stroke="#000000" />
</defs>
<use x="53.168378" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="53.168378" y="202.718437" font-size="10px" text-anchor="middle">0</text>
<use x="97.262622" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="97.262622" y="202.718437" font-size="10px" text-anchor="middle">10</text>
<use x="141.356866" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="141.356866" y="202.718437" font-size="10px" text-anchor="middle">20</text>
<use x="185.45111" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="185.45111" y="202.718437" font-size="10px" text-anchor="middle">30</text>
<use x="229.545354" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="229.545354" y="202.718437" font-size="10px" text-anchor="middle">40</text>
<defs>
<path id="a" d="m0 0h-3.5" stroke="#000000" />
</defs>
<use x="44.57" y="180.06" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="183.859219" font-size="10px" text-anchor="end">0</text>
<use x="44.57" y="155.727925" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="159.527143" font-size="10px" text-anchor="end">2</text>
<use x="44.57" y="131.395849" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="135.195068" font-size="10px" text-anchor="end">4</text>
<use x="44.57" y="107.063774" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="110.862992" font-size="10px" text-anchor="end">6</text>
<use x="44.57" y="82.731698" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="86.530917" font-size="10px" text-anchor="end">8</text>
<use x="44.57" y="58.399623" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="62.198841" font-size="10px" text-anchor="end">10</text>
<use x="44.57" y="34.067547" stroke="#000000" xlink:href="#a"/>
<text x="37.57" y="37.866766" font-size="10px" text-anchor="end">12</text>
<text transform="rotate(-90 18.77 99.46)" x="18.765312" y="99.46" font-size="10px" text-anchor="middle">average</text>
<path d="m53.17 180.1h2.205v-5.475h4.409v-8.111h4.409v-7.705h4.409v-8.313h4.409v-8.719h4.409v-7.908h4.409v-1.014h4.409v-16.42h4.409v-3.447h4.409v-5.272h4.409v0.6083h4.409v-29.81h4.409v7.502h4.409v-7.705h4.409v-13.79h4.409v-1.014h4.409v-12.77h4.409v-11.35h4.409v-9.53h4.409v-10.95h4.409v15.61h4.409v11.35h4.409v10.54h4.409v2.028h4.409v16.22h4.409v-5.88h4.409v23.12h4.409v-1.014h4.409v9.125h4.409v6.286h4.409v1.419h4.409v10.14h4.409v18.45h4.409v3.65h4.409v-3.244h4.409v13.18h4.409v11.96h4.409v4.461h4.409v6.894h2.205" clip-path="url(#c)" fill="none" stroke="#1f77b4" stroke-linecap="square" stroke-width="1.5"/>
<path d="m44.57 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m233.7 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m44.57 188.1h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m44.57 10.8h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m281 188.1h189.2v-177.3h-189.2z" fill="#ffffff"/>
<use x="289.568378" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="289.568378" y="202.718437" font-size="10px" text-anchor="middle">0</text>
<use x="333.662622" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="333.662622" y="202.718437" font-size="10px" text-anchor="middle">10</text>
<use x="377.756866" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="377.756866" y="202.718437" font-size="10px" text-anchor="middle">20</text>
<use x="421.85111" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="421.85111" y="202.718437" font-size="10px" text-anchor="middle">30</text>
<use x="465.945354" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="465.945354" y="202.718437" font-size="10px" text-anchor="middle">40</text>
<use x="280.97" y="180.06" stroke="#000000" xlink:href="#a"/>
<text x="273.97" y="183.859219" font-size="10px" text-anchor="end">0</text>
<use x="280.97" y="139.76" stroke="#000000" xlink:href="#a"/>
<text x="273.97" y="143.559219" font-size="10px" text-anchor="end">5</text>
<use x="280.97" y="99.46" stroke="#000000" xlink:href="#a"/>
<text x="273.97" y="103.259219" font-size="10px" text-anchor="end">10</text>
<use x="280.97" y="59.16" stroke="#000000" xlink:href="#a"/>
<text x="273.97" y="62.959219" font-size="10px" text-anchor="end">15</text>
<use x="280.97" y="18.86" stroke="#000000" xlink:href="#a"/>
<text x="273.97" y="22.659219" font-size="10px" text-anchor="end">20</text>
<text transform="rotate(-90 255.2 99.46)" x="255.165312" y="99.46" font-size="10px" text-anchor="middle">max</text>
<path d="m289.6 180.1h2.205v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v-8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h4.409v8.06h2.205" clip-path="url(#e)" fill="none" stroke="#1f77b4" stroke-linecap="square" stroke-width="1.5"/>
<path d="m281 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m470.1 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m281 188.1h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m281 10.8h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m517.4 188.1h189.2v-177.3h-189.2z" fill="#ffffff"/>
<use x="525.968378" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="525.968378" y="202.718437" font-size="10px" text-anchor="middle">0</text>
<use x="570.062622" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="570.062622" y="202.718437" font-size="10px" text-anchor="middle">10</text>
<use x="614.156866" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="614.156866" y="202.718437" font-size="10px" text-anchor="middle">20</text>
<use x="658.25111" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="658.25111" y="202.718437" font-size="10px" text-anchor="middle">30</text>
<use x="702.345354" y="188.12" stroke="#000000" xlink:href="#b"/>
<text x="702.345354" y="202.718437" font-size="10px" text-anchor="middle">40</text>
<use x="517.37" y="180.06" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="183.859219" font-size="10px" text-anchor="end">0</text>
<use x="517.37" y="147.82" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="151.619219" font-size="10px" text-anchor="end">1</text>
<use x="517.37" y="115.58" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="119.379219" font-size="10px" text-anchor="end">2</text>
<use x="517.37" y="83.34" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="87.139219" font-size="10px" text-anchor="end">3</text>
<use x="517.37" y="51.1" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="54.899219" font-size="10px" text-anchor="end">4</text>
<use x="517.37" y="18.86" stroke="#000000" xlink:href="#a"/>
<text x="510.37" y="22.659219" font-size="10px" text-anchor="end">5</text>
<text transform="rotate(-90 497.9 99.46)" x="497.927812" y="99.46" font-size="10px" text-anchor="middle">min</text>
<path d="m526 180.1h2.205v0h4.409v0h4.409v0h4.409v-32.24h4.409v0h4.409v0h4.409v0h4.409v-32.24h4.409v0h4.409v0h4.409v0h4.409v-32.24h4.409v0h4.409v0h4.409v0h4.409v-32.24h4.409v-32.24h4.409v0h4.409v0h4.409v0h4.409v32.24h4.409v0h4.409v0h4.409v0h4.409v32.24h4.409v0h4.409v0h4.409v0h4.409v32.24h4.409v0h4.409v0h4.409v0h4.409v32.24h4.409v0h4.409v0h4.409v0h4.409v32.24h4.409v0h4.409v0h2.205" clip-path="url(#d)" fill="none" stroke="#1f77b4" stroke-linecap="square" stroke-width="1.5"/>
<path d="m517.4 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m706.5 188.1v-177.3" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m517.4 188.1h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<path d="m517.4 10.8h189.2" fill="none" stroke="#000000" stroke-linecap="square" />
<defs>
<clipPath id="c">
<rect x="44.57" y="10.8" width="189.2" height="177.3"/>
</clipPath>
<clipPath id="e">
<rect x="281" y="10.8" width="189.2" height="177.3"/>
</clipPath>
<clipPath id="d">
<rect x="517.4" y="10.8" width="189.2" height="177.3"/>
</clipPath>
</defs>
</svg>
<svg width="460.8pt" height="345.6pt" version="1.1" viewBox="0 0 460.8 345.6" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">*{stroke-linecap:butt;stroke-linejoin:round;white-space:pre;}</style>
</defs>
<path d="m0 345.6h460.8v-345.6h-460.8z" fill="#ffffff"/>
<path d="m57.6 307.6h357.1v-266.1h-357.1z" fill="#ffffff"/>
<defs>
<path id="b" d="m0 0v3.5" stroke="#000000" />
</defs>
<use x="73.832727" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="73.832727" y="322.182437" font-size="10px" text-anchor="middle">0</text>
<use x="115.455105" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="115.455105" y="322.182437" font-size="10px" text-anchor="middle">5</text>
<use x="157.077483" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="157.077483" y="322.182437" font-size="10px" text-anchor="middle">10</text>
<use x="198.69986" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="198.69986" y="322.182437" font-size="10px" text-anchor="middle">15</text>
<use x="240.322238" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="240.322238" y="322.182437" font-size="10px" text-anchor="middle">20</text>
<use x="281.944615" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="281.944615" y="322.182437" font-size="10px" text-anchor="middle">25</text>
<use x="323.566993" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="323.566993" y="322.182437" font-size="10px" text-anchor="middle">30</text>
<use x="365.189371" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="365.189371" y="322.182437" font-size="10px" text-anchor="middle">35</text>
<use x="406.811748" y="307.584" stroke="#000000" xlink:href="#b"/>
<text x="406.811748" y="322.182437" font-size="10px" text-anchor="middle">40</text>
<defs>
<path id="a" d="m0 0h-3.5" stroke="#000000" />
</defs>
<use x="57.6" y="295.488" stroke="#000000" xlink:href="#a"/>
<text x="50.6" y="299.287219" font-size="10px" text-anchor="end">0.0</text>
<use x="57.6" y="265.248" stroke="#000000" xlink:href="#a"/>
<text x="50.6" y="269.047219" font-size="10px" text-anchor="end">2.5</text>
<use x="57.6" y="235.008" stroke="#000000" xlink:href="#a"/>
<text x="50.6" y="238.807219" font-size="10px" text-anchor="end">5.0</text>
<use x="57.6" y="204.768" stroke="#000000" xlink:href="#a"/>
<text x="50.6" y="208.567219" font-size="10px" text-anchor="end">7.5</text>
<use x="57.6" y="174.528" stroke="#000000" xlink:href="#a"/>
<text x="50.6" y="178.327219" font-size="10px" text-anchor="end">10.0</text>
<use x="57.6" y="144.288" stroke="#000000" xlink:href="#a"/>
<text x="50.6" y="148.087219" font-size="10px" text-anchor="end">12.5</text>
<use x="57.6" y="114.048" stroke="#000000" xlink:href="#a"/>
<text x="50.6" y="117.847219" font-size="10px" text-anchor="end">15.0</text>
<use x="57.6" y="83.808" stroke="#000000" xlink:href="#a"/>