Merge branch 'main' into 'publish'

Cookbook now online

See merge request interactivetextbooks-citg/jupyter-book-manual!44
This commit is contained in:
Tom van Woudenberg 2024-03-03 17:47:06 +01:00
commit 6c04797240
96 changed files with 22398 additions and 120 deletions

View file

@ -3,11 +3,22 @@ author: Caspar Jungbacker
logo: images/TUDelft_logo_rgb.png
execute:
execute_notebooks: auto
execute_notebooks: 'off'
launch_buttons:
thebe: true
sphinx:
extra_extensions:
- sphinx_inline_tabs
- jupyterlite_sphinx
- sphinx.ext.imgconverter
- download_link_replacer
- jupyterbook_patches
config:
jupyterlite_config: jupyterlite-config.json
html_js_files:
- https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js
thebe_config:
use_thebe_lite: true
exclude_patterns: ["**/_*.yml", "**/*.md", "**/*.ipynb"]

View file

@ -23,20 +23,38 @@ parts:
sections:
- file: workflows/git-merge-conflict
- file: workflows/gitlab
- file: workflows/github
- caption: Features
chapters:
- file: basic-features/overview
sections:
- file: basic-features/recipes.md
- file: features/overview
sections:
- file: features/hypothesis
- file: features/remove_from_publish
- file: features/recipes.md
- file: features/grasple.md
- file: features/custom_toc.md
- file: features/custom_download.md
- file: features/h5p.md
- file: features/live_code.md
sections:
- file: features/widgets.ipynb
- file: features/exercise_checking.ipynb
- file: features/jupyterlite/jupyterlite
sections:
- file: features/jupyterlite/configuration
- file: features/jupyterlite/including-jupyterlite
- file: features/h5p.md
- caption: Examples
chapters:
- file: examples/overview
- file: examples/overview
- file: examples/h5p_examples.md
- file: examples/theory_questions.md
- file: examples/interactive_templates.md
sections:
- file: examples/example_gumbel.ipynb
- file: examples/example_quiz_interactive.ipynb
- file: examples/coding_theory_widgets.ipynb
- file: examples/parametric_questions.ipynb

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View file

@ -0,0 +1,259 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"source": [
"# Programming assignment\n",
"\n",
"This page shows how you can convert the classical Jupyter Notebook assignment to a jupyter book format with live coding. A widget has been implemented to check the answers, of which the data is included in a separate python file. The page automatically loads and a custom download page has been added\n",
"\n",
"```{custom_download_link} ./example_gumbel_stripped.ipynb\n",
":replace_default: \"True\"\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"source": [
"## Gumbel Distribution Exercise\n",
"\n",
"Imagine you are concerned with the concentration of an airborne contaminant, $X$, measured in ppm. A previous benchmark study estimates that there is a 10% and 1% chance, respectively, of exceeding 4 and 10 ppm, respectively. You have been asked by the regulatory agency to estimate the contaminant concentration with 0.1% probability of being exceeded. Prior studies suggest that a Gumbel distribution can be used to model contaminant concentration, given by the CDF:\n",
"\n",
"$$\n",
"F_X(x) = \\exp{\\Bigg( -\\exp{\\Big(-\\frac{x-\\mu}{\\beta}\\Big)}\\Bigg)}\n",
"$$\n",
"\n",
"Using the cell blocks below as a guide (and also to check your analysis): Task 1) find the parameters of a Gumbel distribution that matches the information provided above, then, Tasks 2-3) use it to estimate the concentration with exceedance probability 0.1%.\n",
"\n",
"To complete this assignment, you can use `numpy`, `matplotlib` and from the `math` library, `log` and `e` (these are imported for you when you inialize the notebook)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"import micropip\n",
"await micropip.install(\"ipywidgets\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"from math import log, e\n",
"import numpy as np\n",
"from example_gumbel import check_example"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Task 0:** fill in the appropriate fitting points:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"auto-execute-page"
]
},
"outputs": [],
"source": [
"x_1 = _\n",
"p_1 = _\n",
"x_2 = _\n",
"p_2 = _"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Task 1:** derive the distribution parameters:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"def gumbel_2_points(x_1, p_1, x_2, p_2): \n",
" \"\"\"Compute Gumbel distribution parameters from two points of the CDF.\n",
" Arguments:\n",
" x_1 (float): point one\n",
" p_1 (float): cumulative probability for point 1\n",
" x_2 (float): point two\n",
" p_2 (float): cumulative probability for point 2\n",
" \"\"\"\n",
"\n",
" # YOUR CODE GOES HERE #\n",
" beta = _\n",
" mu = _\n",
" #######################\n",
"\n",
" return mu, beta"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The cells below will print your parameter values and create a plot to help confirm you have the right implementation."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"def plot_distribution(mu, beta,\n",
" x_1, p_1, x_2, p_2):\n",
" plt.title(\"Gumbel Distribution, $1-F_X(x)$\")\n",
" plt.xlabel(\"Contaminant Concentration, $X$ [ppm]\")\n",
" plt.ylabel(\"Exceedance Probability [--]\")\n",
" plt.grid(color='black', linestyle='-', linewidth=0.3)\n",
" x_axis = np.arange(0, 20, 0.1)\n",
" plt.plot(x_axis, np.vectorize(gumbel_distribution)(x_axis), linewidth=2)\n",
" plt.plot(x_1, 1 - p_1, 'ro')\n",
" plt.annotate(\"Point 1\", (x_1 + 0.4, 1 - p_1 + 0.02))\n",
" plt.plot(x_2, 1 - p_2, 'ro')\n",
" plt.annotate(\"Point 2\", (x_2 + 0.4, 1 - p_2 + 0.001))\n",
" plt.yscale(\"log\") \n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"mu, beta = gumbel_2_points(x_1, p_1, x_2, p_2)\n",
"\n",
"print(f\"Your mu: {mu:0.5f}\\nYour beta: {beta:0.5f}\")\n",
"\n",
"gumbel_distribution = lambda x: 1 - e**(-e**(-(x - mu)/beta))\n",
"\n",
"plot_distribution(mu, beta, x_1, p_1, x_2, p_2)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Task 2:** write a function to solve for the random variable value (it will be tested for you with the Check answer button, along with the distribution parameters)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def find_x_with_probability_p(p): \n",
" \"\"\" Compute point in the gumbel distribution for which the CDF is p\n",
" Use the variables mu and beta defined above!\n",
" Hint: they have been defined globally, so you don't need to \n",
" include them as arguments.\n",
" \"\"\"\n",
" # YOUR CODE GOES HERE #\n",
" x = _\n",
" #######################\n",
"\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Task 3:** use the function `find_x_with_probability_p` to evaluate the random variable value with exceedance probabiltiy of 0.001."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# YOUR CODE GOES HERE #\n",
"x = _\n",
"#######################\n",
"\n",
"print(f\"The value of x with probability of exceedance 0.001 os {x:0.5f}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"check_example(globals())"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.18"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

View file

@ -0,0 +1,61 @@
from grading import check
from math import isclose
tolerance = 0.001
# Using rel_tol is more reliable in the face of aliasing, but to fit the instructions give we use abs_total
check_float = lambda a, b: isclose(a, b, rel_tol=0, abs_tol=tolerance)
# We have to pass in the globals object since we need to have access to changes as well
@check
def check_example(glob):
mu, beta = glob["mu"], glob["beta"]
if (check_float(mu, -1.7461520011511888) and check_float(beta, 2.553428469837263)):
print(f"Part 1: you got the parameters right, well done! (checked with tolerance {tolerance})")
else:
print(f"Part 1: your parameters are incorrect. (checked with tolerance {tolerance})")
print(f" Other parts won't be graded until these are fixed. ")
return
function = glob["find_x_with_probability_p"]
test_inputs = [(1 - 0.001, 15.891029744351862), (1 - 0.2, 2.0838374640878863), (1 - 0.9, -3.875794191615308)]
failed = []
for x, out in test_inputs:
result = function(x)
if not check_float(result, out):
failed.append((x, out, result))
if len(failed) == 0:
print(f"Part 2: Well done, your inverse function is correct! (checked with tolerance {tolerance})")
else:
print(f"Part 2: Your function failed some tests. Keep in mind the tolerance is {tolerance}")
print(" --> Failed inputs:")
for case in failed:
print(f"{case[0]} gave {case[2]}, expected {case[1]}")
print(f" Other parts won't be graded until these are fixed.")
x = glob["x"]
if check_float(x, 15.891029744351862):
print(f"Part 3: you got the value of x right, well done! (checked with tolerance {tolerance})")
else:
print(f"Part 3: your value of x is incorrect. (checked with tolerance {tolerance})")
return
"""
Task 0:
x_1 = 4
p_1 = 1 - .1
x_2 = 10
p_2 = 1 - .01
Task 1:
beta = -(x_2 - x_1) / log(log(p_2) / log(p_1))
mu = x_1 + beta * log(-log(p_1))
Task 2:
x = mu - beta * log(-log(p))
Task 3:
x = find_x_with_probability_p(1 - 0.001)
"""

View file

@ -0,0 +1,203 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"source": [
"## Gumbel Distribution Exercise\n",
"\n",
"Imagine you are concerned with the concentration of an airborne contaminant, $X$, measured in ppm. A previous benchmark study estimates that there is a 10% and 1% chance, respectively, of exceeding 4 and 10 ppm, respectively. You have been asked by the regulatory agency to estimate the contaminant concentration with 0.1% probability of being exceeded. Prior studies suggest that a Gumbel distribution can be used to model contaminant concentration, given by the CDF:\n",
"\n",
"$$\n",
"F_X(x) = \\exp{\\Bigg( -\\exp{\\Big(-\\frac{x-\\mu}{\\beta}\\Big)}\\Bigg)}\n",
"$$\n",
"\n",
"Using the cell blocks below as a guide (and also to check your analysis): Task 1) find the parameters of a Gumbel distribution that matches the information provided above, then, Tasks 2-3) use it to estimate the concentration with exceedance probability 0.1%.\n",
"\n",
"To complete this assignment, you can use `numpy`, `matplotlib` and from the `math` library, `log` and `e`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"from math import log, e\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Task 0:** fill in the appropriate fitting points:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"x_1 = _\n",
"p_1 = _\n",
"x_2 = _\n",
"p_2 = _"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Task 1:** derive the distribution parameters:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"def gumbel_2_points(x_1, p_1, x_2, p_2): \n",
" \"\"\"Compute Gumbel distribution parameters from two points of the CDF.\n",
" Arguments:\n",
" x_1 (float): point one\n",
" p_1 (float): cumulative probability for point 1\n",
" x_2 (float): point two\n",
" p_2 (float): cumulative probability for point 2\n",
" \"\"\"\n",
"\n",
" # YOUR CODE GOES HERE #\n",
" beta = _\n",
" mu = _\n",
" #######################\n",
"\n",
" return mu, beta"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The cells below will print your parameter values and create a plot to help confirm you have the right implementation."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"def plot_distribution(mu, beta,\n",
" x_1, p_1, x_2, p_2):\n",
" plt.title(\"Gumbel Distribution, $1-F_X(x)$\")\n",
" plt.xlabel(\"Contaminant Concentration, $X$ [ppm]\")\n",
" plt.ylabel(\"Exceedance Probability [--]\")\n",
" plt.grid(color='black', linestyle='-', linewidth=0.3)\n",
" x_axis = np.arange(0, 20, 0.1)\n",
" plt.plot(x_axis, np.vectorize(gumbel_distribution)(x_axis), linewidth=2)\n",
" plt.plot(x_1, 1 - p_1, 'ro')\n",
" plt.annotate(\"Point 1\", (x_1 + 0.4, 1 - p_1 + 0.02))\n",
" plt.plot(x_2, 1 - p_2, 'ro')\n",
" plt.annotate(\"Point 2\", (x_2 + 0.4, 1 - p_2 + 0.001))\n",
" plt.yscale(\"log\") \n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"mu, beta = gumbel_2_points(x_1, p_1, x_2, p_2)\n",
"\n",
"print(f\"Your mu: {mu:0.5f}\\nYour beta: {beta:0.5f}\")\n",
"\n",
"gumbel_distribution = lambda x: 1 - e**(-e**(-(x - mu)/beta))\n",
"\n",
"plot_distribution(mu, beta, x_1, p_1, x_2, p_2)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Task 2:** write a function to solve for the random variable value (it will be tested for you with the Check answer button, along with the distribution parameters)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def find_x_with_probability_p(p): \n",
" \"\"\" Compute point in the gumbel distribution for which the CDF is p\n",
" Use the variables mu and beta defined above!\n",
" Hint: they have been defined globally, so you don't need to \n",
" include them as arguments.\n",
" \"\"\"\n",
" # YOUR CODE GOES HERE #\n",
" x = _\n",
" #######################\n",
"\n",
" return x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Task 3:** use the function `find_x_with_probability_p` to evaluate the random variable value with exceedance probabiltiy of 0.001."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# YOUR CODE GOES HERE #\n",
"x = _\n",
"#######################\n",
"\n",
"print(f\"The value of x with probability of exceedance 0.001 os {x:0.5f}\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

View file

@ -0,0 +1,359 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Combining theory with interactive questions and extensive coding assignment\n",
"This page shows an example of how to combine theory, quizzes and code on one page. With headings and boxes, the interactive parts can be indicated (for now only if part of one cell). Automatic execution has been activated and a custom ipynb.file has replaced the download button.\n",
"\n",
"```{custom_download_link} ./example_quiz_interactive_stripped.ipynb\n",
":replace_default: \"True\"\n",
"```\n",
"\n",
"\n",
"## Weighted least-squares estimation\n",
"In ordinary least-squares estimation, we assume that all observations are equally important. In many cases this is not realistic, as observations may be obtained by different measurement systems, or under different circumstances. We want our methodology for least-squares estimation to be able to take this into account.\n",
"\n",
"We achieve this goal by introducing a weight matrix in the minimization problem:\n",
"\n",
"$$\n",
"\\underset{\\mathrm{x}}{\\min} {\\mathrm{(y-Ax)^T W(y-Ax)}}\n",
"$$\n",
"\n",
"In the unweighted least-squares approach, we arrive at the normal equation by pre-multiplying both sides of $\\mathrm{y=Ax}$ with the transpose of the design matrix $\\mathrm{A^T}$:\n",
"\n",
"$$ \n",
"\\mathrm{y=Ax} \\; \\rightarrow \\; \\mathrm{A^T\\; y = A^T\\; A x }\n",
"$$\n",
"\n",
"In the weighted least-squares approach, we now need to add weight matrix $W$ to this pre-multiplication factor, i.e., $ \\mathrm{A^T W}$, to obtain the normal equation:\n",
"\n",
"$$ \n",
"\\mathrm{y=Ax} \\; \\rightarrow \\; \\mathrm{A^T W \\; y = A^TW \\; A x}\n",
"$$\n",
"\n",
"The normal matrix is now defined as $\\mathrm{N=A^T W A}$. From this, assuming that the normal matrix $N$ is invertible (non-singular) we find the weighted least-squares estimate $ \\mathrm{\\hat{x}} $, \n",
"\n",
"$$ \n",
"\\begin{align*}\n",
"\\mathrm{\\hat{x}} &= \\mathrm{(A^T W A)^{-1} A^T W y} \\\\\n",
" &= \\arg \\underset{\\mathrm{x}}{\\min} {\\mathrm{(y-Ax)^T W(y-Ax)}}\n",
"\\end{align*}\n",
"$$\n",
"\n",
"We also find the derived estimate $ \\mathrm{\\hat{y}} $ and $ \\mathrm{\\hat{\\epsilon}} $:\n",
"\n",
"$$\n",
"\\mathrm{\\hat{y} = A \\hat{x} = A (A^T W A )^{-1} A^T W y}\n",
"$$\n",
"\n",
"$$\n",
" \\mathrm{\\hat{\\epsilon} = y - \\hat{y}= y - A \\hat{x} = y-A (A^T W A )^{-1} A^T W y = (I- A(A^T W A )^{-1} A^T W) y}\n",
"$$\n",
"\n",
"### Quiz question\n",
":::{card}\n",
"<iframe src=\"https://tudelft.h5p.com/content/1292046737060674407/embed\" aria-label=\"WLS_1\" width=\"1088\" height=\"637\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" allow=\"autoplay *; geolocation *; microphone *; camera *; midi *; encrypted-media *\"></iframe><script src=\"https://tudelft.h5p.com/js/h5p-resizer.js\" charset=\"UTF-8\"></script>\n",
":::\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"### Video\n",
"```{eval-rst}\n",
".. raw:: html\n",
"\n",
" <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/iJmkkz37EuU\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n",
"```\n",
"\n",
"### Discussion on the weight matrix\n",
"The weight matrix $\\mathrm{W}$ expresses the (relative) weights between the observations. It is always a square matrix. The size of the weight matrix depends on the number of observations, $m$. The size of the weight matrix is $m\\times m$. \n",
"\n",
"If it is a unit matrix ($\\mathrm{W=I}$), this implies that all observations have equal weight. Note that in this case the equations are equal to the ordinary least-squares solution. \n",
"\n",
"If it is a diagonal matrix, with different values on the diagonal, this implies that entries with a higher value correspond to the observations which are considered to be of more importance. If the weight matrix has non-zero elements on the off-diagonal positions, this implies that (some) observations are correlated.\n",
"\n",
"### Weighted least-squares estimator: properties\n",
"\n",
"Until now, we have looked at the weighted least-squares solution of a single *realization* of the observations, where generally we assume that it is a realization of the *random* observable vector $Y$, since measurements are affected by random errors. As such it follows the the weighted least-squares *estimator* is given by:\n",
"\n",
"$$\n",
"\\hat{X} = \\mathrm{(A^T W A )^{-1} A^T W} Y\n",
"$$\n",
"\n",
"This estimator has two important properties: it is *linear* and *unbiased*.\n",
"\n",
"The linearity property is due to the fact that $\\hat{X}$ is a linear function of the observables $Y$.\n",
"\n",
"The unbiased property means that the expectation of $\\hat{X}$ is equal to the true (but unknown) $\\mathrm{x}$. This can be shown as follows:\n",
"\n",
"$$\n",
"\\mathbb{E}(\\hat{X}) = \\mathrm{(A^T W A )^{-1} A^T W} \\mathbb{E}(Y) = \\mathrm{(A^T W A )^{-1} A^T W Ax = x}\n",
"$$\n",
"\n",
"This a very desirable property. It applies that if we would repeat the measurements many times to obtain a new estimate, the *average of the estimated* values would be equal to the truy values."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise\n",
"\n",
":::{card}\n",
"\n",
"You have a time series of 8 measurements and fit a model assuming a linear trend (constant velocity).\n",
"\n",
"Times of observations, observed values and number of observations are given as the variables `t`, `y` and `m`, as well as `numpy` and `matplotlib.pyplot` abbreviated as `np` and `plt`\n",
":::"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"# this will print all float arrays with 3 decimal places\n",
"import numpy as np\n",
"float_formatter = \"{:.2f}\".format\n",
"np.set_printoptions(formatter={'float_kind':float_formatter})\n",
"\n",
"import micropip\n",
"await micropip.install(\"ipywidgets\")\n",
"import ipywidgets as widgets\n",
"from IPython.display import display\n",
"import operator\n",
"\n",
"def check_answer(variable_name, expected, comparison = operator.eq):\n",
" output = widgets.Output()\n",
" button = widgets.Button(description=\"Check answer\")\n",
" def _inner_check(button):\n",
" with output:\n",
" if comparison(globals()[variable_name], expected):\n",
" output.outputs = [{'name': 'stdout', 'text': 'Correct!', 'output_type': 'stream'}]\n",
" else:\n",
" output.outputs = [{'name': 'stdout', 'text': 'Incorrect!', 'output_type': 'stream'}]\n",
" button.on_click(_inner_check)\n",
" display(button, output)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"# times of observation [months]\n",
"t = np.arange(8)\n",
"\n",
"# observed heights [m]\n",
"y = [1.39, 1.26, 1.48, 4.03, 5.89, 5.14, 6.47, 7.64]\n",
"\n",
"# number of observations\n",
"m = len(t)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
":::{card}\n",
"Fill in the correct $\\mathrm{A}$-matrix.\n",
":::"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"auto-execute-page"
]
},
"outputs": [],
"source": [
"# design matrix\n",
"A = np.column_stack((np.ones(m), t))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"check_answer(\"A\", np.column_stack((np.ones(m), t)), np.array_equiv)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
":::{card}\n",
"Define the weight matrix for $\\mathrm{W}=I_m$\n",
":::"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"W_1 = 1 #added to have initial input"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Weight matrix for case 1\n",
"W_1 = ?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"check_answer(\"W_1\",np.eye(m), np.array_equiv)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
":::{card}\n",
"Define the weight matrix with the weight of first 3 observations is five times as large as the rest\n",
":::"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"W_2 = 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Weight matrix for case 2\n",
"W_2 = ?"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"# Weight matrix for case 2\n",
"w=5\n",
"W_2_ans = np.eye(m)\n",
"W_2_ans[0,0] = w\n",
"W_2_ans[1,1] = w\n",
"W_2_ans[2,2] = w\n",
"check_answer(\"W_2\",W_2_ans, np.array_equiv)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
":::{card}\n",
"Define the weight matrix with the weight of 4th and 5th observation is five times as large as the rest\n",
":::"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Weight matrix for case 3\n",
"W_3 = ?"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.18"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}

View file

@ -0,0 +1,221 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Weighted least-squares estimation\n",
"In ordinary least-squares estimation, we assume that all observations are equally important. In many cases this is not realistic, as observations may be obtained by different measurement systems, or under different circumstances. We want our methodology for least-squares estimation to be able to take this into account.\n",
"\n",
"We achieve this goal by introducing a weight matrix in the minimization problem:\n",
"\n",
"$$\n",
"\\underset{\\mathrm{x}}{\\min} {\\mathrm{(y-Ax)^T W(y-Ax)}}\n",
"$$\n",
"\n",
"In the unweighted least-squares approach, we arrive at the normal equation by pre-multiplying both sides of $\\mathrm{y=Ax}$ with the transpose of the design matrix $\\mathrm{A^T}$:\n",
"\n",
"$$ \n",
"\\mathrm{y=Ax} \\; \\rightarrow \\; \\mathrm{A^T\\; y = A^T\\; A x }\n",
"$$\n",
"\n",
"In the weighted least-squares approach, we now need to add weight matrix $W$ to this pre-multiplication factor, i.e., $ \\mathrm{A^T W}$, to obtain the normal equation:\n",
"\n",
"$$ \n",
"\\mathrm{y=Ax} \\; \\rightarrow \\; \\mathrm{A^T W \\; y = A^TW \\; A x}\n",
"$$\n",
"\n",
"The normal matrix is now defined as $\\mathrm{N=A^T W A}$. From this, assuming that the normal matrix $N$ is invertible (non-singular) we find the weighted least-squares estimate $ \\mathrm{\\hat{x}} $, \n",
"\n",
"$$ \n",
"\\begin{align*}\n",
"\\mathrm{\\hat{x}} &= \\mathrm{(A^T W A)^{-1} A^T W y} \\\\\n",
" &= \\arg \\underset{\\mathrm{x}}{\\min} {\\mathrm{(y-Ax)^T W(y-Ax)}}\n",
"\\end{align*}\n",
"$$\n",
"\n",
"We also find the derived estimate $ \\mathrm{\\hat{y}} $ and $ \\mathrm{\\hat{\\epsilon}} $:\n",
"\n",
"$$\n",
"\\mathrm{\\hat{y} = A \\hat{x} = A (A^T W A )^{-1} A^T W y}\n",
"$$\n",
"\n",
"$$\n",
" \\mathrm{\\hat{\\epsilon} = y - \\hat{y}= y - A \\hat{x} = y-A (A^T W A )^{-1} A^T W y = (I- A(A^T W A )^{-1} A^T W) y}\n",
"$$\n",
"\n",
"### Quiz question\n",
"<iframe src=\"https://tudelft.h5p.com/content/1292046737060674407/embed\" aria-label=\"WLS_1\" width=\"1088\" height=\"637\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" allow=\"autoplay *; geolocation *; microphone *; camera *; midi *; encrypted-media *\"></iframe><script src=\"https://tudelft.h5p.com/js/h5p-resizer.js\" charset=\"UTF-8\"></script>\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"### Video\n",
"<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/iJmkkz37EuU\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n",
"\n",
"### Discussion on the weight matrix\n",
"The weight matrix $\\mathrm{W}$ expresses the (relative) weights between the observations. It is always a square matrix. The size of the weight matrix depends on the number of observations, $m$. The size of the weight matrix is $m\\times m$. \n",
"\n",
"If it is a unit matrix ($\\mathrm{W=I}$), this implies that all observations have equal weight. Note that in this case the equations are equal to the ordinary least-squares solution. \n",
"\n",
"If it is a diagonal matrix, with different values on the diagonal, this implies that entries with a higher value correspond to the observations which are considered to be of more importance. If the weight matrix has non-zero elements on the off-diagonal positions, this implies that (some) observations are correlated.\n",
"\n",
"### Weighted least-squares estimator: properties\n",
"\n",
"Until now, we have looked at the weighted least-squares solution of a single *realization* of the observations, where generally we assume that it is a realization of the *random* observable vector $Y$, since measurements are affected by random errors. As such it follows the the weighted least-squares *estimator* is given by:\n",
"\n",
"$$\n",
"\\hat{X} = \\mathrm{(A^T W A )^{-1} A^T W} Y\n",
"$$\n",
"\n",
"This estimator has two important properties: it is *linear* and *unbiased*.\n",
"\n",
"The linearity property is due to the fact that $\\hat{X}$ is a linear function of the observables $Y$.\n",
"\n",
"The unbiased property means that the expectation of $\\hat{X}$ is equal to the true (but unknown) $\\mathrm{x}$. This can be shown as follows:\n",
"\n",
"$$\n",
"\\mathbb{E}(\\hat{X}) = \\mathrm{(A^T W A )^{-1} A^T W} \\mathbb{E}(Y) = \\mathrm{(A^T W A )^{-1} A^T W Ax = x}\n",
"$$\n",
"\n",
"This a very desirable property. It applies that if we would repeat the measurements many times to obtain a new estimate, the *average of the estimated* values would be equal to the truy values."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise\n",
"\n",
"You have a time series of 8 measurements and fit a model assuming a linear trend (constant velocity)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# times of observation [months]\n",
"t = np.arange(8)\n",
"\n",
"# observed heights [m]\n",
"y = [1.39, 1.26, 1.48, 4.03, 5.89, 5.14, 6.47, 7.64]\n",
"\n",
"# number of observations\n",
"m = len(t)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fill in the correct $\\mathrm{A}$-matrix."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# design matrix\n",
"A = np.column_stack((np.ones(m), t))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Define the weight matrix for $\\mathrm{W}=I_m$"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Weight matrix for case 1\n",
"W_1 = ?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Define the weight matrix with the weight of first 3 observations is five times as large as the rest"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Weight matrix for case 2\n",
"W_2 = ?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Define the weight matrix with the weight of 4th and 5th observation is five times as large as the rest"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"# Weight matrix for case 3\n",
"W_3 = ?"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.18"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}

View file

@ -0,0 +1,23 @@
# H5p
This page shows some examples of H5p questions.
Some best-practices on the use of H5p:
- To startup your H5p-account, first login to H5p via Brightspace (follow instructions as under [https://www.tudelft.nl/teaching-support/educational-tools/h5p](https://www.tudelft.nl/teaching-support/educational-tools/h5p)). After that, direct login is possible via [tudelft.h5p.com](tudelft.h5p.com)
- Place your H5p-elements in a shared folder in H5p.
- Disable the display options "Toolbar Below Content" and "Display author's name to public (anonymous users) (only relevant when content's status is set to Public )" for each
## Complex fill in the blanks
This can be used to evaluate numerical answers:
<iframe src="https://tudelft.h5p.com/content/1292010272694757307/embed" aria-label="Example MUDE" width="1088" height="637" frameborder="0" allowfullscreen="allowfullscreen" allow="autoplay *; geolocation *; microphone *; camera *; midi *; encrypted-media *"></iframe><script src="https://tudelft.h5p.com/js/h5p-resizer.js" charset="UTF-8"></script>
## Dialog cards
This can be used to ask open questions:
<iframe src="https://tudelft.h5p.com/content/1292050206829217497/embed" aria-label="PA1 File Contents" width="1088" height="637" frameborder="0" allowfullscreen="allowfullscreen" allow="autoplay *; geolocation *; microphone *; camera *; midi *; encrypted-media *"></iframe><script src="https://tudelft.h5p.com/js/h5p-resizer.js" charset="UTF-8"></script>
## Question set
This can be used to create a set of Multiple Choice, Drag and Drop, Fill in the blanks, True/False questions and Image choice questions:
<iframe src="https://tudelft.h5p.com/content/1292062157562749767/embed" aria-label="quiz_uniform_motion" width="1088" height="637" frameborder="0" allowfullscreen="allowfullscreen" allow="autoplay *; geolocation *; microphone *; camera *; midi *; encrypted-media *"></iframe><script src="https://tudelft.h5p.com/js/h5p-resizer.js" charset="UTF-8"></script>
## True/False Question
<iframe src="https://tudelft.h5p.com/content/1292061623388939257/embed" aria-label="quiz_blue_vs_LS" width="1088" height="637" frameborder="0" allowfullscreen="allowfullscreen" allow="autoplay *; geolocation *; microphone *; camera *; midi *; encrypted-media *"></iframe><script src="https://tudelft.h5p.com/js/h5p-resizer.js" charset="UTF-8"></script>

View file

@ -0,0 +1,16 @@
# Templates for interactive coding / non-coding elements
These pages show examples of how to use interactive coding / non-coding elements in a Jupyter Book.
You can make use of:
- Admonitions
- JupyterQuiz
- H5p
- Grasple-exercises
- Interactive widgets
- Live coding exercise checking with widgets
- Any combination of the above
The following templates are given:
```{tableofcontents}
```

View file

@ -1,3 +1,12 @@
# Overview
This part will include examples for jupyter book pages with features
This chapter includes examples for jupyter book pages with features. Here is an overview of the different examples:
- H5p: examples of H5p questions
- Combining theory with interactive questions
- Templates for interactive coding / non-coding elements:
- Programming assignment: Example of how to convert a Jupyter notebook to Jupyter Book with live coding
- Combining theory with interactive questions and extensive coding assignment: Example how to combine theory, quizzes and code on one page
- Combining theory with interactive questions: Example how to combine theory with questions, so there's no coding involved.
- Parametric question: Example for an equation to be checked on equivalence with the correct answer

View file

@ -0,0 +1,318 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Parametric question\n",
"\n",
"On this page an example is given for parametric questions, in which an equation is checked on equivalence with the correct answer."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"import sympy as sp\n",
"import numpy as np\n",
"from sympy import pi, latex\n",
"from sympy.printing.mathml import mathml\n",
"\n",
"import operator\n",
"import ipywidgets as widgets\n",
"from IPython.display import display, Latex, display_jpeg, Math, Markdown\n",
"sp.init_printing(use_latex=True) \n",
"\n",
"check_equation = lambda eq1, eq2: sp.simplify(eq1-eq2) == 0\n",
"\n",
"def check_answer(variable_name, expected, comparison = operator.eq):\n",
" output = widgets.Output()\n",
" button = widgets.Button(description=\"Check answer\")\n",
" def _inner_check(button):\n",
" with output:\n",
" if comparison(globals()[variable_name], expected):\n",
" output.outputs = [{'name': 'stdout', 'text': 'Correct!',\n",
" 'output_type': 'stream'}]\n",
" else:\n",
" output.outputs = [{'name': 'stdout', 'text': 'Incorrect!',\n",
" 'output_type': 'stream'}]\n",
" button.on_click(_inner_check)\n",
" display(button, output)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exercises on Taylor expansion\n",
"\n",
"This page shows some exercises on calculation Taylor expansion. If you reload this page, you'll get new values.\n",
"\n",
"### Exercise 1\n",
"\n",
"Calculate the taylor series expension of:\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true,
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"x, y = sp.symbols('x, y')\n",
"a_1 = sp.Integer(np.random.randint(2,6))\n",
"b_1 = sp.Integer(np.random.randint(-10,10))\n",
"c_1 = sp.Integer(np.random.randint(-5,5))\n",
"eq1_original = a_1 * x**2 + b_1*x\n",
"eq1_correct = sp.series(eq1_original,x,c_1)\n",
"eq1_answer = 0\n",
"display(eq1_original)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"around:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"display(sp.Eq(x,c_1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fill in your answer and run the cell before clicking 'Check answer'. "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"auto-execute-page",
"disable-download-page"
]
},
"outputs": [],
"source": [
"eq1_answer = "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"check_answer(\"eq1_answer\",eq1_correct, check_equation)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 2\n",
"\n",
"Calculate the taylor series expension of:\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"a_2 = sp.Integer(np.random.randint(1,7))\n",
"c_2 = sp.Integer(np.random.randint(-5,5))\n",
"eq2_original = a_2*sp.tan(x)\n",
"display(eq2_original)\n",
"eq2_correct = sp.series(eq2_original,x,c_2*sp.pi,3).removeO()\n",
"#display(eq2_correct)\n",
"eq2_answer = 0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"around:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"display(sp.Eq(x,c_2*sp.pi))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"discard any $O(x^3)$ terms.\n",
"\n",
"Fill in your answer and run the cell before clicking 'Check answer'. Furthermore, use `pi` for $\\pi$:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"eq2_answer = "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"check_answer(\"eq2_answer\",eq2_correct, check_equation)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 3\n",
"\n",
"Calculate the taylor series expension of:\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"a_3 = sp.Integer(np.random.randint(1,10))\n",
"c_3 = sp.Integer(np.random.randint(-1,1))\n",
"eq3_original = a_3 / (1 - x)\n",
"display(eq3_original)\n",
"eq3_correct = sp.series(eq3_original,x,c_3,3).removeO()\n",
"#display(eq3_correct)\n",
"eq3_answer = 0"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"around:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"display(sp.Eq(x,c_3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"discard any $O(x^3)$ terms.\n",
"\n",
"Fill in your answer and run the cell before clicking 'Check answer':"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"eq3_answer ="
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"check_answer(\"eq3_answer\",eq3_correct, check_equation)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

View file

@ -0,0 +1,58 @@
# Combining theory with interactive questions
This page shows you how to combine theory with questions, so there's no coding involved.
```{index} Truss structures
```
## Truss structures
Truss structures are structures assembled of straight elements connected in nodes. These elements partly create triangles, which are of importance for its deformability. Of course, the structures you'll design shouldn't deform, so it's crucial to understand this topic.
### Examples truss structures
Examples of these structures are commonly found in rail bridges like the one below:
```{figure} theory_questions_images/pic0.jpg
:width: 400
```
Furthermore, these structures are commonly found in building as well, both invisible and visible:
```{figure} theory_questions_images/pic1.jpg
:width: 400
```
### Modelling truss structures
Truss structures are modelled as rigid bars (so elements which cannot deform) connected by hinges (so elements can rotate with respect to one each other). In our model, hinges are indicate with a circle, and bars with a line. For example, the structure you've seen in the second example (with two diagonal bars removed) is modelled as follows:
```{figure} theory_questions_images/Truss1.svg
```
Now that you've been introduced to truss structures, answer the following question:
:::{card} Test Yourself
<iframe src="https://tudelft.h5p.com/content/1291910926067816717/embed" aria-label="Modelling truss structures" width="1088" height="200" frameborder="0" allowfullscreen="allowfullscreen" allow="autoplay *; geolocation *; microphone *; camera *; midi *; encrypted-media *"></iframe><script src="https://tudelft.h5p.com/js/h5p-resizer.js" charset="UTF-8"></script>
:::
### Mechanisms
A mechanism is a structure which can deform as a whole, while the individual elements don't deform. This deformation doesn't have to be large. An example of a mechanism is a rectangular truss structure, it can deform as shown below:
```{figure} theory_questions_images/rectangle.svg
```
A triangle cannot deform:
```{figure} theory_questions_images/triangle.svg
```
For structures which consists of partly triangles, partly quadrilaterals, it is not directly clear whether the structure can deform. To identify whether the truss structure is a mechanism, you can try to move each node with respect to the nodes with which it is connected:
```{figure} theory_questions_images/gifje.gif
:width: 300px
```
An example of a truss structure of partly triangles, partly quadrilaterals, which is not a mechanism is the following:
```{figure} theory_questions_images/structure3.svg
```
Now that you've been introduced to mechanisms, answer the following questions:
:::{card} Test Yourself
<iframe src="https://tudelft.h5p.com/content/1291910957230324507/embed" aria-label="Truss structures and mechanism" width="1088" height="300 " frameborder="0" allowfullscreen="allowfullscreen" allow="autoplay *; geolocation *; microphone *; camera *; midi *; encrypted-media *"></iframe><script src="https://tudelft.h5p.com/js/h5p-resizer.js" charset="UTF-8"></script>
:::
:::{card} Test Yourself
<iframe src="https://tudelft.h5p.com/content/1291910962551764997/embed" aria-label="Truss structures and mechanims 2" width="1088" height="300" frameborder="0" allowfullscreen="allowfullscreen" allow="autoplay *; geolocation *; microphone *; camera *; midi *; encrypted-media *"></iframe><script src="https://tudelft.h5p.com/js/h5p-resizer.js" charset="UTF-8"></script>
:::

View file

@ -0,0 +1,135 @@
<?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">
<!-- Gegenereerd door Microsoft Visio, SVG Export Truss1.svg Pagina-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="2.43168in" height="1.48679in"
viewBox="0 0 175.081 107.049" xml:space="preserve" color-interpolation-filters="sRGB" class="st6">
<v:documentProperties v:langID="1043" v:metric="true" v:viewMarkup="false"/>
<style type="text/css">
<![CDATA[
.st1 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
.st2 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st3 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
.st4 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st5 {fill:#000000;font-family:Times New Roman;font-size:1.00001em}
.st6 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
<title>Pagina-1</title>
<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
v:shadowOffsetY="-8.50394"/>
<g id="shape16-1" v:mID="16" v:groupContext="shape" transform="translate(-62.0285,71.2411) rotate(-90)">
<title>Vakwerk, 1 pt.16</title>
<path d="M0 107.05 L28.35 107.05" class="st1"/>
</g>
<g id="shape17-4" v:mID="17" v:groupContext="shape" transform="translate(-19.5089,71.2411) rotate(-90)">
<title>Vakwerk, 1 pt.17</title>
<path d="M0 107.05 L28.35 107.05" class="st1"/>
</g>
<g id="shape18-7" v:mID="18" v:groupContext="shape" transform="translate(23.0108,71.2411) rotate(-90)">
<title>Vakwerk, 1 pt.18</title>
<path d="M0 107.05 L28.35 107.05" class="st1"/>
</g>
<g id="shape19-10" v:mID="19" v:groupContext="shape" transform="translate(70.6799,-17.8292) rotate(-33.69)">
<title>Vakwerk, 1 pt.19</title>
<path d="M0 107.05 L51.1 107.05" class="st1"/>
</g>
<g id="shape20-13" v:mID="20" v:groupContext="shape" transform="translate(61.8812,-46.1756) rotate(33.69)">
<title>Vakwerk, 1 pt.20</title>
<path d="M0 107.05 L51.1 107.05" class="st1"/>
</g>
<g id="shape14-16" v:mID="14" v:groupContext="shape" transform="translate(45.0207,-35.8081)">
<title>Vakwerk, 1 pt.14</title>
<path d="M0 107.05 L42.52 107.05" class="st1"/>
</g>
<g id="shape15-19" v:mID="15" v:groupContext="shape" transform="translate(87.5404,-35.8081)">
<title>Vakwerk, 1 pt.15</title>
<path d="M0 107.05 L42.52 107.05" class="st1"/>
</g>
<g id="shape12-22" v:mID="12" v:groupContext="shape" transform="translate(87.5404,-64.1545)">
<title>Vakwerk, 1 pt.12</title>
<path d="M0 107.05 L42.52 107.05" class="st1"/>
</g>
<g id="shape13-25" v:mID="13" v:groupContext="shape" transform="translate(130.06,-64.1545)">
<title>Vakwerk, 1 pt.13</title>
<path d="M0 107.05 L42.52 107.05" class="st1"/>
</g>
<g id="shape1-28" v:mID="1" v:groupContext="shape" transform="translate(2.50098,-64.1545)">
<title>Vakwerk, 1 pt</title>
<path d="M0 107.05 L42.52 107.05" class="st1"/>
</g>
<g id="shape2-31" v:mID="2" v:groupContext="shape" transform="translate(45.0207,-64.1545)">
<title>Vakwerk, 1 pt.2</title>
<path d="M0 107.05 L42.52 107.05" class="st1"/>
</g>
<g id="shape3-34" v:mID="3" v:groupContext="shape" transform="translate(42.8947,-62.0285)">
<title>Scharnier</title>
<ellipse cx="2.12598" cy="104.923" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape4-36" v:mID="4" v:groupContext="shape" transform="translate(0.375,-62.0285)">
<title>Scharnier.4</title>
<ellipse cx="2.12598" cy="104.923" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape5-38" v:mID="5" v:groupContext="shape" transform="translate(42.8947,-33.6821)">
<title>Scharnier.5</title>
<ellipse cx="2.12598" cy="104.923" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape6-40" v:mID="6" v:groupContext="shape" transform="translate(85.4144,-62.0285)">
<title>Scharnier.6</title>
<ellipse cx="2.12598" cy="104.923" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape7-42" v:mID="7" v:groupContext="shape" transform="translate(85.4144,-33.6821)">
<title>Scharnier.7</title>
<ellipse cx="2.12598" cy="104.923" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape8-44" v:mID="8" v:groupContext="shape" transform="translate(127.934,-62.0285)">
<title>Scharnier.8</title>
<ellipse cx="2.12598" cy="104.923" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape9-46" v:mID="9" v:groupContext="shape" transform="translate(127.934,-33.6821)">
<title>Scharnier.9</title>
<ellipse cx="2.12598" cy="104.923" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape10-48" v:mID="10" v:groupContext="shape" transform="translate(170.454,-62.0285)">
<title>Scharnier.10</title>
<ellipse cx="2.12598" cy="104.923" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape21-50" v:mID="21" v:groupContext="shape" transform="translate(-20.229,-38.6673) rotate(-38.6598)">
<title>Blad.21</title>
<path d="M0 104.45 C0.85 105.51 26.46 109.87 29.22 104.23 C30.13 102.37 28.56 99.43 27.45 99.18 C25.88 98.83 25.21 103.79
27.98 105.78 C31.98 108.65 43.16 105.32 45.38 104.45" class="st3"/>
</g>
<g id="shape22-53" v:mID="22" v:groupContext="shape" transform="translate(-10.9839,67.5258) rotate(-104.036)">
<title>Blad.22</title>
<path d="M0 101.56 C2.72 104.25 4.29 102.37 6.39 101.69 C11.05 100.19 18.29 104.57 18.7 106.23 C19.07 107.71 14.01 107.03
13.06 105.41 C11.35 102.45 23.26 96.35 29.22 101.56" class="st3"/>
</g>
<g id="shape23-56" v:mID="23" v:groupContext="shape" transform="translate(127.468,-5.93792) rotate(38.4072)">
<title>Blad.23</title>
<path d="M0 98.49 C0.83 100.64 2.58 101.06 4.28 101.61 C9.64 103.35 14.53 106.41 20.12 104.25 C23 103.13 26.07 100.62
25.45 100.02 C24.7 99.29 18.55 101.37 17.02 103.08 C12.47 108.18 49.12 109.98 40.15 98.49" class="st3"/>
</g>
<g id="shape24-59" v:mID="24" v:groupContext="shape" transform="translate(203.975,87.51) rotate(99.0395)">
<title>Blad.24</title>
<path d="M0 103.55 C0.71 106.99 14.74 106.78 15.84 103.9 C16.42 102.39 13.48 100.16 12.33 99.86 C9.11 99.04 20.02 113.49
25.26 103.55" class="st3"/>
</g>
<g id="shape25-62" v:mID="25" v:groupContext="shape" transform="translate(52.1073,-92.501)">
<title>Blad.25</title>
<desc>hinges</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="24.8032" cy="99.9626" width="49.61" height="14.1732"/>
<rect x="0" y="92.876" width="49.6063" height="14.1732" class="st4"/>
<text x="9.14" y="103.56" class="st5" v:langID="1043"><v:paragraph v:horizAlign="1"/><v:tabList/>hinges</text> </g>
<g id="shape26-65" v:mID="26" v:groupContext="shape" transform="translate(98.8789,-0.375)">
<title>Blad.26</title>
<desc>bars</desc>
<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
<v:textRect cx="16.6535" cy="99.9626" width="33.31" height="14.1732"/>
<rect x="0" y="92.876" width="33.3071" height="14.1732" class="st4"/>
<text x="6.66" y="103.56" class="st5" v:langID="1043"><v:paragraph v:horizAlign="1"/><v:tabList/>bars</text> </g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View file

@ -0,0 +1,77 @@
<?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">
<!-- Gegenereerd door Microsoft Visio, SVG Export rectangle.svg Pagina-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="1.15215in" height="0.856873in"
viewBox="0 0 82.9547 61.6949" xml:space="preserve" color-interpolation-filters="sRGB" class="st6">
<v:documentProperties v:langID="1043" v:metric="true" v:viewMarkup="false"/>
<style type="text/css">
<![CDATA[
.st1 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
.st2 {stroke:#000000;stroke-dasharray:1,2;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
.st3 {fill:#ffffff;stroke:#000000;stroke-dasharray:0.75,1.5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st4 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st5 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st6 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
<title>Pagina-1</title>
<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
v:shadowOffsetY="-8.50394"/>
<g id="shape1301-1" v:mID="1301" v:groupContext="shape" transform="translate(2.501,-2.50099)">
<title>Vakwerk, 1 pt.1301</title>
<path d="M0 61.69 L56.69 61.69" class="st1"/>
</g>
<g id="shape1302-4" v:mID="1302" v:groupContext="shape" transform="translate(64.1959,2.50099) rotate(90)">
<title>Vakwerk, 1 pt.1302</title>
<path d="M0 61.69 L56.69 61.69" class="st2"/>
</g>
<g id="shape1308-7" v:mID="1308" v:groupContext="shape" transform="translate(120.889,2.50099) rotate(90)">
<title>Vakwerk, 1 pt.1308</title>
<path d="M0 61.69 L56.69 61.69" class="st2"/>
</g>
<g id="shape1309-10" v:mID="1309" v:groupContext="shape" transform="translate(2.501,-59.1939)">
<title>Vakwerk, 1 pt.1309</title>
<path d="M0 61.69 L56.69 61.69" class="st2"/>
</g>
<g id="shape1305-13" v:mID="1305" v:groupContext="shape" transform="translate(62.0699,0.37503) rotate(90)">
<title>Scharnier.1305</title>
<ellipse cx="2.12598" cy="59.5689" rx="2.12598" ry="2.12598" class="st3"/>
</g>
<g id="shape1304-15" v:mID="1304" v:groupContext="shape" transform="translate(118.763,0.37503) rotate(90)">
<title>Scharnier.1304</title>
<ellipse cx="2.12598" cy="59.5689" rx="2.12598" ry="2.12598" class="st3"/>
</g>
<g id="shape1307-17" v:mID="1307" v:groupContext="shape" transform="translate(62.0699,57.0679) rotate(90)">
<title>Scharnier.1307</title>
<ellipse cx="2.12598" cy="59.5689" rx="2.12598" ry="2.12598" class="st4"/>
</g>
<g id="shape1306-19" v:mID="1306" v:groupContext="shape" transform="translate(118.763,57.0679) rotate(90)">
<title>Scharnier.1306</title>
<ellipse cx="2.12598" cy="59.5689" rx="2.12598" ry="2.12598" class="st4"/>
</g>
<g id="shape1310-21" v:mID="1310" v:groupContext="shape" transform="translate(-55.2657,37.5314) rotate(-69.444)">
<title>Blad.1310</title>
<path d="M0 61.69 L60.55 61.69" class="st5"/>
</g>
<g id="shape1311-24" v:mID="1311" v:groupContext="shape" transform="translate(1.42719,37.5314) rotate(-69.444)">
<title>Blad.1311</title>
<path d="M0 61.69 L60.55 61.69" class="st5"/>
</g>
<g id="shape1312-27" v:mID="1312" v:groupContext="shape" transform="translate(23.7608,-59.1939)">
<title>Vakwerk, 1 pt.1312</title>
<path d="M0 61.69 L56.69 61.69" class="st1"/>
</g>
<g id="shape1313-30" v:mID="1313" v:groupContext="shape" transform="translate(83.3297,0.375) rotate(90)">
<title>Scharnier.1313</title>
<ellipse cx="2.12598" cy="59.5689" rx="2.12598" ry="2.12598" class="st4"/>
</g>
<g id="shape1314-32" v:mID="1314" v:groupContext="shape" transform="translate(140.023,0.375) rotate(90)">
<title>Scharnier.1314</title>
<ellipse cx="2.12598" cy="59.5689" rx="2.12598" ry="2.12598" class="st4"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -0,0 +1,118 @@
<?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">
<!-- Gegenereerd door Microsoft Visio, SVG Export structure 3.svg Pagina-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="2.43168in" height="1.25057in"
viewBox="0 0 175.081 90.0413" xml:space="preserve" color-interpolation-filters="sRGB" class="st3">
<v:documentProperties v:langID="1043" v:metric="true" v:viewMarkup="false"/>
<style type="text/css">
<![CDATA[
.st1 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
.st2 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st3 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
<title>Pagina-1</title>
<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
v:shadowOffsetY="-8.50394"/>
<g id="shape1318-1" v:mID="1318" v:groupContext="shape" transform="translate(37.5944,12.6214) rotate(-33.69)">
<title>Vakwerk, 1 pt.1318</title>
<path d="M0 90.04 L51.1 90.04" class="st1"/>
</g>
<g id="shape1323-4" v:mID="1323" v:groupContext="shape" transform="translate(130.06,-30.8474)">
<title>Vakwerk, 1 pt.1323</title>
<path d="M0 90.04 L42.52 90.04" class="st1"/>
</g>
<g id="shape1324-7" v:mID="1324" v:groupContext="shape" transform="translate(2.50098,-30.8474)">
<title>Vakwerk, 1 pt.1324</title>
<path d="M0 90.04 L42.52 90.04" class="st1"/>
</g>
<g id="shape1325-10" v:mID="1325" v:groupContext="shape" transform="translate(94.9666,-15.725) rotate(33.69)">
<title>Vakwerk, 1 pt.1325</title>
<path d="M0 90.04 L51.1 90.04" class="st1"/>
</g>
<g id="shape1334-13" v:mID="1334" v:groupContext="shape" transform="translate(-47.445,-15.7249) rotate(-33.6901)">
<title>Vakwerk, 1 pt.1334</title>
<path d="M0 90.04 L51.1 90.04" class="st1"/>
</g>
<g id="shape1335-16" v:mID="1335" v:groupContext="shape" transform="translate(-4.92527,-44.0715) rotate(-33.6901)">
<title>Vakwerk, 1 pt.1335</title>
<path d="M0 90.04 L51.1 90.04" class="st1"/>
</g>
<g id="shape1336-19" v:mID="1336" v:groupContext="shape" transform="translate(45.0207,-59.1939)">
<title>Vakwerk, 1 pt.1336</title>
<path d="M0 90.04 L42.52 90.04" class="st1"/>
</g>
<g id="shape1337-22" v:mID="1337" v:groupContext="shape" transform="translate(-4.92532,-15.725) rotate(-33.6901)">
<title>Vakwerk, 1 pt.1337</title>
<path d="M0 90.04 L51.1 90.04" class="st1"/>
</g>
<g id="shape1338-25" v:mID="1338" v:groupContext="shape" transform="translate(-2.50098,30.8474) rotate(-90)">
<title>Vakwerk, 1 pt.1338</title>
<path d="M0 90.04 L28.35 90.04" class="st1"/>
</g>
<g id="shape1339-28" v:mID="1339" v:groupContext="shape" transform="translate(-45.0207,59.1939) rotate(-90)">
<title>Vakwerk, 1 pt.1339</title>
<path d="M0 90.04 L28.35 90.04" class="st1"/>
</g>
<g id="shape1340-31" v:mID="1340" v:groupContext="shape" transform="translate(130.06,120.889) rotate(180)">
<title>Vakwerk, 1 pt.1340</title>
<path d="M0 90.04 L42.52 90.04" class="st1"/>
</g>
<g id="shape1341-34" v:mID="1341" v:groupContext="shape" transform="translate(80.1141,105.766) rotate(-146.31)">
<title>Vakwerk, 1 pt.1341</title>
<path d="M0 90.04 L51.1 90.04" class="st1"/>
</g>
<g id="shape1342-37" v:mID="1342" v:groupContext="shape" transform="translate(122.634,134.113) rotate(-146.31)">
<title>Vakwerk, 1 pt.1342</title>
<path d="M0 90.04 L51.1 90.04" class="st1"/>
</g>
<g id="shape1343-40" v:mID="1343" v:groupContext="shape" transform="translate(80.1141,134.113) rotate(-146.31)">
<title>Vakwerk, 1 pt.1343</title>
<path d="M0 90.04 L51.1 90.04" class="st1"/>
</g>
<g id="shape1344-43" v:mID="1344" v:groupContext="shape" transform="translate(40.0187,59.1939) rotate(-90)">
<title>Vakwerk, 1 pt.1344</title>
<path d="M0 90.04 L28.35 90.04" class="st1"/>
</g>
<g id="shape1329-46" v:mID="1329" v:groupContext="shape" transform="translate(85.4144,-85.4144)">
<title>Scharnier.1329</title>
<ellipse cx="2.12598" cy="87.9154" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape1330-48" v:mID="1330" v:groupContext="shape" transform="translate(85.4144,-57.0679)">
<title>Scharnier.1330</title>
<ellipse cx="2.12598" cy="87.9154" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape1326-50" v:mID="1326" v:groupContext="shape" transform="translate(42.8947,-57.0679)">
<title>Scharnier.1326</title>
<ellipse cx="2.12598" cy="87.9154" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape1328-52" v:mID="1328" v:groupContext="shape" transform="translate(42.8947,-28.7215)">
<title>Scharnier.1328</title>
<ellipse cx="2.12598" cy="87.9154" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape1331-54" v:mID="1331" v:groupContext="shape" transform="translate(127.934,-57.0679)">
<title>Scharnier.1331</title>
<ellipse cx="2.12598" cy="87.9154" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape1332-56" v:mID="1332" v:groupContext="shape" transform="translate(127.934,-28.7215)">
<title>Scharnier.1332</title>
<ellipse cx="2.12598" cy="87.9154" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape1345-58" v:mID="1345" v:groupContext="shape" transform="translate(85.4144,-0.375)">
<title>Scharnier.1345</title>
<ellipse cx="2.12598" cy="87.9154" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape1327-60" v:mID="1327" v:groupContext="shape" transform="translate(0.375,-28.7214)">
<title>Scharnier.1327</title>
<ellipse cx="2.12598" cy="87.9154" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape1333-62" v:mID="1333" v:groupContext="shape" transform="translate(170.454,-28.7214)">
<title>Scharnier.1333</title>
<ellipse cx="2.12598" cy="87.9154" rx="2.12598" ry="2.12598" class="st2"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

@ -0,0 +1,46 @@
<?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">
<!-- Gegenereerd door Microsoft Visio, SVG Export triangle.svg Pagina-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="1.05372in" height="0.921858in"
viewBox="0 0 75.8681 66.3738" xml:space="preserve" color-interpolation-filters="sRGB" class="st3">
<v:documentProperties v:langID="1043" v:metric="true" v:viewMarkup="false"/>
<style type="text/css">
<![CDATA[
.st1 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
.st2 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
.st3 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
]]>
</style>
<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
<title>Pagina-1</title>
<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
v:shadowOffsetY="-8.50394"/>
<g id="shape1294-1" v:mID="1294" v:groupContext="shape" transform="translate(-54.9804,30.6859) rotate(-60)">
<title>Vakwerk, 1 pt.1294</title>
<path d="M0 66.37 L70.87 66.37" class="st1"/>
</g>
<g id="shape1295-4" v:mID="1295" v:groupContext="shape" transform="translate(2.50098,-2.50101)">
<title>Vakwerk, 1 pt.1295</title>
<path d="M0 66.37 L70.87 66.37" class="st1"/>
</g>
<g id="shape1296-7" v:mID="1296" v:groupContext="shape" transform="translate(15.8858,97.0596) rotate(-120)">
<title>Vakwerk, 1 pt.1296</title>
<path d="M0 66.37 L70.87 66.37" class="st1"/>
</g>
<g id="shape1297-10" v:mID="1297" v:groupContext="shape" transform="translate(0.375,-0.375)">
<title>Scharnier.1297</title>
<ellipse cx="2.12598" cy="64.2478" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape1298-12" v:mID="1298" v:groupContext="shape" transform="translate(71.2411,-0.375)">
<title>Scharnier.1298</title>
<ellipse cx="2.12598" cy="64.2478" rx="2.12598" ry="2.12598" class="st2"/>
</g>
<g id="shape1299-14" v:mID="1299" v:groupContext="shape" transform="translate(35.8081,-61.7468)">
<title>Scharnier.1299</title>
<ellipse cx="2.12598" cy="64.2478" rx="2.12598" ry="2.12598" class="st2"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,39 @@
# Page download options
You can control the download option of the book in two ways:
- Disabling downloading using cell tags `disable-download-page`
- Add / replace download link with custom link using `spinhx-download-link-replacer`
## Disabling download
If you add `disable-download-page` as a cell tag to a cell in a python notebook, the download button ({fa}`download`) will disappear from the topright corner. The cell tag can be added to any code cell in the notebook. This function might be handy if your page includes code which you don't want the students to see. Be aware that this also removes the option to download a PDF of the page.
## Add/replace download link
The download link {fa}`download` --> {fa}`file`{guilabel}`.ipynb` can be replaced by using the following code in any markdown / notebook file:
````md
```{custom_download_link} <link_target>
:text: "Custom text"
:replace_default: "True"
```
````
An explanation of the options of this command is given on https://gitlab.tudelft.nl/mude/sphinx-download-link-replacer.
A potential application of this functionality is when creating a page in which students have to do some coding. Downloading the page allows the student to save their work and work with their local environment. However, the original source file might include code (jupyterbook formatting, widgets, answers) which is not necessary for students. You can make a copy of the notebook file without these elements and replace the {fa}`file`{guilabel}`.ipynb` link to this custom notebook file. Furthermore, you can add any additional data as an additional {fa}`file`{guilabel}`.zip` file.
### Installation instructions
To make use of this functionality, you have to install the `download_link_replace` package by running the following line in your command line:
```
pip install git+https://gitlab.tudelft.nl/mude/sphinx-download-link-replacer
```
Furthermore, you should add the following line to `requirements.txt`
```
download_link_replacer @ git+https://gitlab.tudelft.nl/mude/sphinx-download-link-replacer
```
and to `_config.yml`:
```
sphinx:
extra_extensions:
- download_link_replacer
```

View file

@ -0,0 +1,22 @@
# Exclude parts of book from published book
A new feature is added to enable testing of all interactive features on the web server (i.e., in the draft book) while preventing students from seeing it. Pages in the draft book (`main` branch) can be manually stripped out of the table of contents when a merge request from `main` to `publish` is made using a tag `REMOVE-FROM-PUBLISH`. Pages marked with this feature are still visible in the draft book and books build from source on personal computers. The tag is applied as follows:
```
format: jb-book
root: intro
parts:
- caption: ...
chapters:
- file: ...
...
# START REMOVE-FROM-PUBLISH
- file: files_to_remove
# END REMOVE-FROM-PUBLISH
```
There is no limit to the number of stripped sections, they can be sequential and indentation does not matter. The action is implemented in shell script `build-book.sh` and is executed at run time (see line in script [here](https://gitlab.tudelft.nl/mude/book/-/blob/main/build-book.sh#L13)).
```{note}
The `REMOVE-FROM-PUBLISH` feature was developed to retain testing of all interactive features on the web server and we recommended incorporating this in all books that rely on these features. It avoids problems associated with building the book on various platforms and virtual environments, rather than the actualy webserver where the book will be deployed.
```

View file

@ -0,0 +1,120 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Exercise checking using check-answer button\n",
"\n",
"Using the python-enabled interactivity, exercise checking can be intuitively incorporated using a widgets which checks the value of certain variables with respect to the answer. These examples show different approaches to achieving this goal. \n",
"\n",
"A function has been made to check the value of a variable. As input values it takes the variable name, the expected value (correct answer) and how these values should be compared. You need to add this function to each page, including the imports, and add the `thebe-remove-input-init` tag to the cell.\n",
"```python\n",
"import micropip\n",
"await micropip.install(\"ipywidgets\")\n",
"import ipywidgets as widgets\n",
"from IPython.display import display\n",
"import operator\n",
"\n",
"def check_answer(variable_name, expected, comparison = operator.eq):\n",
" output = widgets.Output()\n",
" button = widgets.Button(description=\"Check answer\")\n",
" def _inner_check(button):\n",
" with output:\n",
" if comparison(globals()[variable_name], expected):\n",
" output.outputs = [{'name': 'stdout', 'text': 'Correct!', 'output_type': 'stream'}]\n",
" else:\n",
" output.outputs = [{'name': 'stdout', 'text': 'Incorrect!', 'output_type': 'stream'}]\n",
" button.on_click(_inner_check)\n",
" display(button, output)\n",
"```\n",
"\n",
"To check a float value, you could use `math.isclose` as a function. For checking the equivalence of arrays, you might consider `numpy.array_equiv`\n",
"\n",
"You can choose to include the correct answers in the same notebook. If students download the page and you didn't specify a custom url, they can find the correct answers. You can also place the correct answers in a seperate .py file which you import in the notebook.\n",
"\n",
"## Example"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"import micropip\n",
"await micropip.install(\"ipywidgets\")\n",
"import ipywidgets as widgets\n",
"from IPython.display import display\n",
"import operator\n",
"\n",
"def check_answer(variable_name, expected, comparison = operator.eq):\n",
" output = widgets.Output()\n",
" button = widgets.Button(description=\"Check answer\")\n",
" def _inner_check(button):\n",
" with output:\n",
" if comparison(globals()[variable_name], expected):\n",
" output.outputs = [{'name': 'stdout', 'text': 'Correct!', 'output_type': 'stream'}]\n",
" else:\n",
" output.outputs = [{'name': 'stdout', 'text': 'Incorrect!', 'output_type': 'stream'}]\n",
" button.on_click(_inner_check)\n",
" display(button, output)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-init",
"auto-execute-page"
]
},
"outputs": [],
"source": [
"# This example has the user type in the answer as a Python variable, but they need to run the cell to update the answer checked!\n",
"pi = 3.14"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"import math\n",
"check_answer(\"pi\", 3.14, math.isclose)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.6"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}

View file

@ -1,4 +1,4 @@
# Embedding Grasple question
# Grasple questions
[Grasple](https://app.grasple.com/) gives you an embed code for each exercise which looks like this, which can be added cirectly to your markdown-file.
```html

View file

@ -1,4 +1,4 @@
# Adding `JupyterLite` to a page
# How to add `JupyterLite` to a page
There are three different `JupyterLite` directives that you can include in your web page:

File diff suppressed because one or more lines are too long

View file

@ -1,11 +0,0 @@
# Gallery
On this page, you can find some example usage of `JupyterLite`. The reader is invited to contribute to this gallery with their own interesting examples.
## Interactive plot
```{eval-rst}
.. retrolite:: interactive-wave.ipynb
:width: 100%
:height: 600px
```

View file

@ -1,4 +1,4 @@
# Interactive elements with JupyterLite-Sphinx
# JupyterLite-Sphinx: Interactive elements
By popular demand: how to include interactive pieces of code in your Jupyter Book. We can do this by using the [JupyterLite](https://github.com/jupyterlite) app, which allows you to run a Jupyter Lab session and execute Python code entirely in-browser. Jupyterlite can be embedded in a Jupyter Book with the [`JupyterLite-Sphinx`](https://github.com/jupyterlite/jupyterlite-sphinx) extension.

View file

@ -0,0 +1,48 @@
# Python-enabled interactivity
Our book has been enable to run Python code live in the browser (thanks Max!). This page contains some installation instructions and the other sections show how to use this functionality to create interactive figures and feedback on code
## Setting up Python live coding
To set up the Python live coding you need to add our [own sphinx-thebe extension](https://gitlab.tudelft.nl/interactivetextbooks-citg/extensions/sphinx-thebe) to your book. This extensions doesn't rely on a 3rd party like Binder and it supports local python execution and custom features. Therefore, you need to add some lines to `requirements.txt` and `_config.yml`
For `requirements.txt` add the following lines:
```
--extra-index-url https://gitlab.tudelft.nl/api/v4/projects/11239/packages/pypi/simple
sphinx-thebe == 0.2.1000
```
This will download the correct version of the sphinx extension when the book is build on the server (which loads the required packages from `requirements.txt`)
Afterwards, this sphinx extension needs to be enabled in your book. This can be done by adding the following lines to `_config.yml`:
```
launch_buttons:
thebe: true
sphinx:
html_js_files:
- https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js
thebe_config:
use_thebe_lite: true
exclude_patterns: ["**/_*.yml", "**/*.md", "**/*.ipynb"]
```
By `launch_buttons` you initiate the {fa}`rocket` --> {guilabel}`Live Code` on the top right corner of every page generated from a `.ipynb` file. The `html_js_files` link calls for some required javascript files. `use_thebe_lite` makes sure you initiate our adapted sphinx thebe extensions. The `exclude_patterns` makes sure you import all files so that they can be accessed from your code, except for the files matching the patterns shown.
## Instructions: local build
To test the fuctionality, you have to run a local server, otherwise the interactivity doens't work. So, you cannot just open the `index.html` file any more. This can be done with the following steps:
1. build the book by running ` jupyter book build <directory of your book>`. If you are using Windows you should use the Git Bash terminal. Set this as your default in VS Code, then open it using "New Terminal." If you have not already done so, you will need to allow Git Bash to use your Python libraries by running the command `conda init bash`.
2. Set up a server by running `python -m http.server 8000`.
3. Open the book by going to [http://localhost:8000/](http://localhost:8000/) in your browser. You may need to reload the page once the rebuild is complete. You can do this on Chrome by right-clicking somewhere on the page, select "Inspect", open the "Network" tab, then reload with `CTRL+R`. Or try `ctrl`+`F5`
4. Go to any page that is created from a Jupyter notebook
If you push to main, you can test the interactivity on the book-draft website as well.
## Custom cell tags
With the extended functionality of live code, additional cell tags have been developed to be added to cells in any .ipynb file, next to the [existing tags] of the jupyter book (https://jupyterbook.org/en/stable/content/metadata.html):
- `disable-execution-cell` disables the ability to execute the cell when thebe is activated. This might be useful if you notebook file includes interactivity for only a part of the coding cells
- `disable-execution-page` disables the ability to execute the entire page. This might be useful if you use python code for creating a page, but the code is not part of the actual content of the book.
- `auto-execute-page` automatically starts the thebe live coding functionality whenever the page is opened. This is particularly useful if you're using widgets on a page. At this moment, this tags doesn't work in combination with `thebe-remove-input-init`
- `thebe-init` directly starts running this cell as soon as the thebe live coding functionality starts.
- `thebe-remove-input-init`, as `thebe-init`, starts the cell directly as soon as the thebe live coding functionality starts. However, the input is not shown to the students (in static and interactive mode). The original `remove-input` tag will not work as it deletes the entire cell, so it can never be executed.

View file

@ -1,14 +1,25 @@
# CEG-book Features
```{warning} Under Construction!
This page will provide a list of some commonly used book features, and sub-pages will provide additional information, specifically:
This chapter provides a list of commonly used book features together with sub-pages that provide additional information on:
- the purpose
- how to install them
- how to use them
- where to find the source code
```
Overview of features covered:
- Interaction on the website: Adding comments and feedback to content on the website
- Grasple Questions: Explanation how to embed Grasple questions in the book.
- Adding interactive h5p elements: Embedding interactive HTML-blocks in the book
- Python-enabled interactivity: Run Python code live in the browser
- Widgets
- Exercise checking using check-answer button
- JupyterLite-Sphinx: Including interactive pieces of content in the book.
- Configuration
- How to add `JupyterLite` to a page
- Exclude parts of book from published book
- Page download options
To see examples for these features, go to the Example chapter.
The {guilabel}`books-CEG` label indicates a feature developed by us.

BIN
book/features/pd/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 47 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 113 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 30 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 30 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 32 KiB

View file

@ -0,0 +1,727 @@
<?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">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="329.821375pt" height="325.98825pt" viewBox="0 0 329.821375 325.98825" xmlns="http://www.w3.org/2000/svg" version="1.1">
<metadata>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<cc:Work>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:date>2023-01-08T11:58:16.440884</dc:date>
<dc:format>image/svg+xml</dc:format>
<dc:creator>
<cc:Agent>
<dc:title>Matplotlib v3.5.2, https://matplotlib.org/</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
</rdf:RDF>
</metadata>
<defs>
<style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
</defs>
<g id="figure_1">
<g id="patch_1">
<path d="M -0 325.98825
L 329.821375 325.98825
L 329.821375 0
L -0 0
z
" style="fill: #ffffff"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 46.965625 288.432
L 313.077625 288.432
L 313.077625 22.32
L 46.965625 22.32
z
" style="fill: #ffffff"/>
</g>
<g id="PolyCollection_1">
<defs>
<path id="m11572d5885" d="M 46.965625 -303.66825
L 46.965625 -238.536878
L 247.946253 -238.536878
L 247.946253 -37.55625
L 313.077625 -37.55625
L 313.077625 -303.66825
L 313.077625 -303.66825
L 247.946253 -303.66825
L 247.946253 -303.66825
L 46.965625 -303.66825
z
" style="stroke: #000000; stroke-width: 2"/>
</defs>
<g clip-path="url(#p0d7d643c55)">
<use xlink:href="#m11572d5885" x="0" y="325.98825" style="fill: #d3d3d3; stroke: #000000; stroke-width: 2"/>
</g>
</g>
<g id="patch_3">
<path clip-path="url(#p0d7d643c55)" style="fill: none; stroke: #000000; stroke-width: 4; stroke-linejoin: miter"/>
</g>
<g id="matplotlib.axis_1">
<g id="xtick_1">
<g id="line2d_1">
<defs>
<path id="md90e7c4a51" d="M 0 0
L 0 3.5
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#md90e7c4a51" x="64.706425" y="288.432" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_1">
<!-- 60 -->
<g transform="translate(58.343925 303.030437)scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-36" d="M 2113 2584
Q 1688 2584 1439 2293
Q 1191 2003 1191 1497
Q 1191 994 1439 701
Q 1688 409 2113 409
Q 2538 409 2786 701
Q 3034 994 3034 1497
Q 3034 2003 2786 2293
Q 2538 2584 2113 2584
z
M 3366 4563
L 3366 3988
Q 3128 4100 2886 4159
Q 2644 4219 2406 4219
Q 1781 4219 1451 3797
Q 1122 3375 1075 2522
Q 1259 2794 1537 2939
Q 1816 3084 2150 3084
Q 2853 3084 3261 2657
Q 3669 2231 3669 1497
Q 3669 778 3244 343
Q 2819 -91 2113 -91
Q 1303 -91 875 529
Q 447 1150 447 2328
Q 447 3434 972 4092
Q 1497 4750 2381 4750
Q 2619 4750 2861 4703
Q 3103 4656 3366 4563
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-30" d="M 2034 4250
Q 1547 4250 1301 3770
Q 1056 3291 1056 2328
Q 1056 1369 1301 889
Q 1547 409 2034 409
Q 2525 409 2770 889
Q 3016 1369 3016 2328
Q 3016 3291 2770 3770
Q 2525 4250 2034 4250
z
M 2034 4750
Q 2819 4750 3233 4129
Q 3647 3509 3647 2328
Q 3647 1150 3233 529
Q 2819 -91 2034 -91
Q 1250 -91 836 529
Q 422 1150 422 2328
Q 422 3509 836 4129
Q 1250 4750 2034 4750
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-36"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
</g>
</g>
</g>
<g id="xtick_2">
<g id="line2d_2">
<g>
<use xlink:href="#md90e7c4a51" x="100.188025" y="288.432" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_2">
<!-- 80 -->
<g transform="translate(93.825525 303.030437)scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-38" d="M 2034 2216
Q 1584 2216 1326 1975
Q 1069 1734 1069 1313
Q 1069 891 1326 650
Q 1584 409 2034 409
Q 2484 409 2743 651
Q 3003 894 3003 1313
Q 3003 1734 2745 1975
Q 2488 2216 2034 2216
z
M 1403 2484
Q 997 2584 770 2862
Q 544 3141 544 3541
Q 544 4100 942 4425
Q 1341 4750 2034 4750
Q 2731 4750 3128 4425
Q 3525 4100 3525 3541
Q 3525 3141 3298 2862
Q 3072 2584 2669 2484
Q 3125 2378 3379 2068
Q 3634 1759 3634 1313
Q 3634 634 3220 271
Q 2806 -91 2034 -91
Q 1263 -91 848 271
Q 434 634 434 1313
Q 434 1759 690 2068
Q 947 2378 1403 2484
z
M 1172 3481
Q 1172 3119 1398 2916
Q 1625 2713 2034 2713
Q 2441 2713 2670 2916
Q 2900 3119 2900 3481
Q 2900 3844 2670 4047
Q 2441 4250 2034 4250
Q 1625 4250 1398 4047
Q 1172 3844 1172 3481
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-38"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
</g>
</g>
</g>
<g id="xtick_3">
<g id="line2d_3">
<g>
<use xlink:href="#md90e7c4a51" x="135.669625" y="288.432" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_3">
<!-- 100 -->
<g transform="translate(126.125875 303.030437)scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-31" d="M 794 531
L 1825 531
L 1825 4091
L 703 3866
L 703 4441
L 1819 4666
L 2450 4666
L 2450 531
L 3481 531
L 3481 0
L 794 0
L 794 531
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="xtick_4">
<g id="line2d_4">
<g>
<use xlink:href="#md90e7c4a51" x="171.151225" y="288.432" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_4">
<!-- 120 -->
<g transform="translate(161.607475 303.030437)scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-32" d="M 1228 531
L 3431 531
L 3431 0
L 469 0
L 469 531
Q 828 903 1448 1529
Q 2069 2156 2228 2338
Q 2531 2678 2651 2914
Q 2772 3150 2772 3378
Q 2772 3750 2511 3984
Q 2250 4219 1831 4219
Q 1534 4219 1204 4116
Q 875 4013 500 3803
L 500 4441
Q 881 4594 1212 4672
Q 1544 4750 1819 4750
Q 2544 4750 2975 4387
Q 3406 4025 3406 3419
Q 3406 3131 3298 2873
Q 3191 2616 2906 2266
Q 2828 2175 2409 1742
Q 1991 1309 1228 531
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-32" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="xtick_5">
<g id="line2d_5">
<g>
<use xlink:href="#md90e7c4a51" x="206.632825" y="288.432" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_5">
<!-- 140 -->
<g transform="translate(197.089075 303.030437)scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-34" d="M 2419 4116
L 825 1625
L 2419 1625
L 2419 4116
z
M 2253 4666
L 3047 4666
L 3047 1625
L 3713 1625
L 3713 1100
L 3047 1100
L 3047 0
L 2419 0
L 2419 1100
L 313 1100
L 313 1709
L 2253 4666
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-34" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="xtick_6">
<g id="line2d_6">
<g>
<use xlink:href="#md90e7c4a51" x="242.114425" y="288.432" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_6">
<!-- 160 -->
<g transform="translate(232.570675 303.030437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-36" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="xtick_7">
<g id="line2d_7">
<g>
<use xlink:href="#md90e7c4a51" x="277.596025" y="288.432" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_7">
<!-- 180 -->
<g transform="translate(268.052275 303.030437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-38" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="xtick_8">
<g id="line2d_8">
<g>
<use xlink:href="#md90e7c4a51" x="313.077625" y="288.432" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_8">
<!-- 200 -->
<g transform="translate(303.533875 303.030437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-32"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="text_9">
<!-- $X$ -->
<g transform="translate(176.571625 316.708562)scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-Oblique-58" d="M 878 4666
L 1516 4666
L 2316 2981
L 3763 4666
L 4500 4666
L 2578 2438
L 3738 0
L 3103 0
L 2163 1966
L 459 0
L -275 0
L 1906 2509
L 878 4666
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-Oblique-58" transform="translate(0 0.09375)"/>
</g>
</g>
</g>
<g id="matplotlib.axis_2">
<g id="ytick_1">
<g id="line2d_9">
<defs>
<path id="m919004953e" d="M 0 0
L -3.5 0
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#m919004953e" x="46.965625" y="270.6912" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_10">
<!-- 60 -->
<g transform="translate(27.240625 274.490419)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-36"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
</g>
</g>
</g>
<g id="ytick_2">
<g id="line2d_10">
<g>
<use xlink:href="#m919004953e" x="46.965625" y="235.2096" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_11">
<!-- 80 -->
<g transform="translate(27.240625 239.008819)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-38"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
</g>
</g>
</g>
<g id="ytick_3">
<g id="line2d_11">
<g>
<use xlink:href="#m919004953e" x="46.965625" y="199.728" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_12">
<!-- 100 -->
<g transform="translate(20.878125 203.527219)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="ytick_4">
<g id="line2d_12">
<g>
<use xlink:href="#m919004953e" x="46.965625" y="164.2464" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_13">
<!-- 120 -->
<g transform="translate(20.878125 168.045619)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-32" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="ytick_5">
<g id="line2d_13">
<g>
<use xlink:href="#m919004953e" x="46.965625" y="128.7648" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_14">
<!-- 140 -->
<g transform="translate(20.878125 132.564019)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-34" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="ytick_6">
<g id="line2d_14">
<g>
<use xlink:href="#m919004953e" x="46.965625" y="93.2832" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_15">
<!-- 160 -->
<g transform="translate(20.878125 97.082419)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-36" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="ytick_7">
<g id="line2d_15">
<g>
<use xlink:href="#m919004953e" x="46.965625" y="57.8016" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_16">
<!-- 180 -->
<g transform="translate(20.878125 61.600819)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-38" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="ytick_8">
<g id="line2d_16">
<g>
<use xlink:href="#m919004953e" x="46.965625" y="22.32" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_17">
<!-- 200 -->
<g transform="translate(20.878125 26.119219)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-32"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
</g>
<g id="text_18">
<!-- $Y$ -->
<g transform="translate(14.798437 158.476)rotate(-90)scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-Oblique-59" d="M 403 4666
L 1081 4666
L 1953 2747
L 3616 4666
L 4325 4666
L 2209 2222
L 1778 0
L 1147 0
L 1575 2222
L 403 4666
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-Oblique-59" transform="translate(0 0.09375)"/>
</g>
</g>
</g>
<g id="LineCollection_1">
<path d="M 247.946253 87.451372
L 247.946253 22.32
" clip-path="url(#p0d7d643c55)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #000000; stroke-width: 1.5"/>
</g>
<g id="LineCollection_2">
<path d="M 247.946253 87.451372
L 313.077625 87.451372
" clip-path="url(#p0d7d643c55)" style="fill: none; stroke-dasharray: 5.55,2.4; stroke-dashoffset: 0; stroke: #000000; stroke-width: 1.5"/>
</g>
<g id="patch_4">
<path d="M 46.965625 288.432
L 46.965625 22.32
" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/>
</g>
<g id="patch_5">
<path d="M 313.077625 288.432
L 313.077625 22.32
" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/>
</g>
<g id="patch_6">
<path d="M 46.965625 288.432
L 313.077625 288.432
" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/>
</g>
<g id="patch_7">
<path d="M 46.965625 22.32
L 313.077625 22.32
" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/>
</g>
<g id="text_19">
<!-- $p_{OR}$ (P=0.0100) -->
<g transform="translate(133.581625 16.32)scale(0.12 -0.12)">
<defs>
<path id="DejaVuSans-Oblique-70" d="M 3175 2156
Q 3175 2616 2975 2859
Q 2775 3103 2400 3103
Q 2144 3103 1911 2972
Q 1678 2841 1497 2591
Q 1319 2344 1212 1994
Q 1106 1644 1106 1300
Q 1106 863 1306 627
Q 1506 391 1875 391
Q 2147 391 2380 519
Q 2613 647 2778 891
Q 2956 1147 3065 1494
Q 3175 1841 3175 2156
z
M 1394 2969
Q 1625 3272 1939 3428
Q 2253 3584 2638 3584
Q 3175 3584 3472 3232
Q 3769 2881 3769 2247
Q 3769 1728 3584 1258
Q 3400 788 3053 416
Q 2822 169 2531 39
Q 2241 -91 1919 -91
Q 1547 -91 1294 64
Q 1041 219 916 525
L 556 -1331
L -19 -1331
L 922 3500
L 1497 3500
L 1394 2969
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-Oblique-4f" d="M 2919 4238
Q 2400 4238 2003 3986
Q 1606 3734 1313 3219
Q 1125 2891 1026 2522
Q 928 2153 928 1778
Q 928 1128 1239 775
Q 1550 422 2119 422
Q 2631 422 3032 676
Q 3434 931 3719 1434
Q 3909 1772 4009 2142
Q 4109 2513 4109 2881
Q 4109 3528 3796 3883
Q 3484 4238 2919 4238
z
M 2100 -91
Q 1241 -91 748 418
Q 256 928 256 1813
Q 256 2319 448 2847
Q 641 3375 978 3788
Q 1375 4272 1862 4511
Q 2350 4750 2938 4750
Q 3794 4750 4287 4245
Q 4781 3741 4781 2869
Q 4781 2331 4593 1812
Q 4406 1294 4056 872
Q 3656 384 3173 146
Q 2691 -91 2100 -91
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-Oblique-52" d="M 1613 4147
L 1294 2491
L 2106 2491
Q 2584 2491 2879 2755
Q 3175 3019 3175 3444
Q 3175 3784 2976 3965
Q 2778 4147 2406 4147
L 1613 4147
z
M 2772 2241
Q 2972 2194 3105 2009
Q 3238 1825 3413 1275
L 3809 0
L 3144 0
L 2778 1197
Q 2638 1659 2453 1815
Q 2269 1972 1888 1972
L 1191 1972
L 806 0
L 172 0
L 1081 4666
L 2503 4666
Q 3150 4666 3495 4373
Q 3841 4081 3841 3531
Q 3841 3044 3547 2687
Q 3253 2331 2772 2241
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-20" transform="scale(0.015625)"/>
<path id="DejaVuSans-28" d="M 1984 4856
Q 1566 4138 1362 3434
Q 1159 2731 1159 2009
Q 1159 1288 1364 580
Q 1569 -128 1984 -844
L 1484 -844
Q 1016 -109 783 600
Q 550 1309 550 2009
Q 550 2706 781 3412
Q 1013 4119 1484 4856
L 1984 4856
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-50" d="M 1259 4147
L 1259 2394
L 2053 2394
Q 2494 2394 2734 2622
Q 2975 2850 2975 3272
Q 2975 3691 2734 3919
Q 2494 4147 2053 4147
L 1259 4147
z
M 628 4666
L 2053 4666
Q 2838 4666 3239 4311
Q 3641 3956 3641 3272
Q 3641 2581 3239 2228
Q 2838 1875 2053 1875
L 1259 1875
L 1259 0
L 628 0
L 628 4666
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-3d" d="M 678 2906
L 4684 2906
L 4684 2381
L 678 2381
L 678 2906
z
M 678 1631
L 4684 1631
L 4684 1100
L 678 1100
L 678 1631
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-2e" d="M 684 794
L 1344 794
L 1344 0
L 684 0
L 684 794
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-29" d="M 513 4856
L 1013 4856
Q 1481 4119 1714 3412
Q 1947 2706 1947 2009
Q 1947 1309 1714 600
Q 1481 -109 1013 -844
L 513 -844
Q 928 -128 1133 580
Q 1338 1288 1338 2009
Q 1338 2731 1133 3434
Q 928 4138 513 4856
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-Oblique-70" transform="translate(0 0.125)"/>
<use xlink:href="#DejaVuSans-Oblique-4f" transform="translate(63.476562 -16.28125)scale(0.7)"/>
<use xlink:href="#DejaVuSans-Oblique-52" transform="translate(118.574219 -16.28125)scale(0.7)"/>
<use xlink:href="#DejaVuSans-20" transform="translate(169.946289 0.125)"/>
<use xlink:href="#DejaVuSans-28" transform="translate(201.733398 0.125)"/>
<use xlink:href="#DejaVuSans-50" transform="translate(240.74707 0.125)"/>
<use xlink:href="#DejaVuSans-3d" transform="translate(301.049805 0.125)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(384.838867 0.125)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(448.461914 0.125)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(480.249023 0.125)"/>
<use xlink:href="#DejaVuSans-31" transform="translate(543.87207 0.125)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(607.495117 0.125)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(671.118164 0.125)"/>
<use xlink:href="#DejaVuSans-29" transform="translate(734.741211 0.125)"/>
</g>
</g>
</g>
</g>
<defs>
<clipPath id="p0d7d643c55">
<rect x="46.965625" y="22.32" width="266.112" height="266.112"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

View file

@ -0,0 +1,349 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="340.152" height="226.768" viewBox="0 0 340.152 226.768">
<defs>
<filter id="filter-remove-color-and-invert-alpha" x="0%" y="0%" width="100%" height="100%">
<feColorMatrix color-interpolation-filters="sRGB" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 -1 1"/>
</filter>
<filter id="filter-0" x="0%" y="0%" width="100%" height="100%">
<feImage xlink:href="#compositing-group-1" result="source" x="0" y="0" width="408.1824" height="272.1216"/>
<feImage xlink:href="#compositing-group-2" result="destination" x="0" y="0" width="408.1824" height="272.1216"/>
<feComposite in="source" in2="destination" operator="arithmetic" k1="0" k2="1" k3="1" k4="0" color-interpolation-filters="sRGB"/>
</filter>
<filter id="filter-1" x="0%" y="0%" width="100%" height="100%">
<feImage xlink:href="#compositing-group-4" result="source" x="0" y="0" width="408.1824" height="272.1216"/>
<feImage xlink:href="#compositing-group-5" result="destination" x="0" y="0" width="408.1824" height="272.1216"/>
<feComposite in="source" in2="destination" operator="arithmetic" k1="0" k2="1" k3="1" k4="0" color-interpolation-filters="sRGB"/>
</filter>
<filter id="filter-2" x="0%" y="0%" width="100%" height="100%">
<feImage xlink:href="#compositing-group-7" result="source" x="0" y="0" width="408.1824" height="272.1216"/>
<feImage xlink:href="#compositing-group-8" result="destination" x="0" y="0" width="408.1824" height="272.1216"/>
<feComposite in="source" in2="destination" operator="arithmetic" k1="0" k2="1" k3="1" k4="0" color-interpolation-filters="sRGB"/>
</filter>
<filter id="filter-3" x="0%" y="0%" width="100%" height="100%">
<feImage xlink:href="#compositing-group-10" result="source" x="0" y="0" width="408.1824" height="272.1216"/>
<feImage xlink:href="#compositing-group-11" result="destination" x="0" y="0" width="408.1824" height="272.1216"/>
<feComposite in="source" in2="destination" operator="arithmetic" k1="0" k2="1" k3="1" k4="0" color-interpolation-filters="sRGB"/>
</filter>
<filter id="filter-4" x="0%" y="0%" width="100%" height="100%">
<feImage xlink:href="#compositing-group-13" result="source" x="0" y="0" width="408.1824" height="272.1216"/>
<feImage xlink:href="#compositing-group-14" result="destination" x="0" y="0" width="408.1824" height="272.1216"/>
<feComposite in="source" in2="destination" operator="arithmetic" k1="0" k2="1" k3="1" k4="0" color-interpolation-filters="sRGB"/>
</filter>
<filter id="filter-5" x="0%" y="0%" width="100%" height="100%">
<feImage xlink:href="#compositing-group-16" result="source" x="0" y="0" width="408.1824" height="272.1216"/>
<feImage xlink:href="#compositing-group-17" result="destination" x="0" y="0" width="408.1824" height="272.1216"/>
<feComposite in="source" in2="destination" operator="arithmetic" k1="0" k2="1" k3="1" k4="0" color-interpolation-filters="sRGB"/>
</filter>
<filter id="filter-6" x="0%" y="0%" width="100%" height="100%">
<feImage xlink:href="#compositing-group-19" result="source" x="0" y="0" width="408.1824" height="272.1216"/>
<feImage xlink:href="#compositing-group-20" result="destination" x="0" y="0" width="408.1824" height="272.1216"/>
<feComposite in="source" in2="destination" operator="arithmetic" k1="0" k2="1" k3="1" k4="0" color-interpolation-filters="sRGB"/>
</filter>
<g>
<g id="glyph-0-0">
<path d="M 1.5 0 L 1.5 -9 L 10.5 -9 L 10.5 0 Z M 2.25 -0.75 L 9.75 -0.75 L 9.75 -8.25 L 2.25 -8.25 Z M 2.25 -0.75 "/>
</g>
<g id="glyph-0-1">
<path d="M 0.875 -5.390625 L 0.875 -5.71875 C 0.875 -6.582031 1.054688 -7.226562 1.421875 -7.65625 C 1.796875 -8.082031 2.242188 -8.296875 2.765625 -8.296875 C 2.984375 -8.296875 3.242188 -8.257812 3.546875 -8.1875 L 3.546875 -7.140625 C 3.378906 -7.203125 3.21875 -7.234375 3.0625 -7.234375 C 2.644531 -7.234375 2.351562 -7.117188 2.1875 -6.890625 C 2.03125 -6.671875 1.953125 -6.28125 1.953125 -5.71875 L 1.953125 -5.390625 L 2.90625 -5.390625 L 2.90625 -4.4375 L 1.953125 -4.4375 L 1.953125 0 L 0.875 0 L 0.875 -4.4375 L 0.109375 -4.4375 L 0.109375 -5.390625 Z M 0.875 -5.390625 "/>
</g>
<g id="glyph-0-2">
<path d="M 0.84375 0 L 0.84375 -8.203125 L 3.4375 -8.203125 C 4.21875 -8.203125 4.835938 -7.988281 5.296875 -7.5625 C 5.765625 -7.144531 6 -6.578125 6 -5.859375 C 6 -5.390625 5.878906 -4.96875 5.640625 -4.59375 C 5.398438 -4.226562 5.070312 -3.960938 4.65625 -3.796875 C 4.25 -3.628906 3.660156 -3.546875 2.890625 -3.546875 L 2.015625 -3.546875 L 2.015625 0 Z M 3.234375 -7.15625 L 2.015625 -7.15625 L 2.015625 -4.59375 L 3.296875 -4.59375 C 3.773438 -4.59375 4.140625 -4.703125 4.390625 -4.921875 C 4.648438 -5.148438 4.78125 -5.472656 4.78125 -5.890625 C 4.78125 -6.734375 4.265625 -7.15625 3.234375 -7.15625 Z M 3.234375 -7.15625 "/>
</g>
<g id="glyph-0-3">
<path d="M 1.90625 -5.390625 L 1.90625 -4.15625 L 1.953125 -4.25 C 2.472656 -5.082031 2.988281 -5.5 3.5 -5.5 C 3.90625 -5.5 4.328125 -5.296875 4.765625 -4.890625 L 4.203125 -3.953125 C 3.828125 -4.304688 3.484375 -4.484375 3.171875 -4.484375 C 2.828125 -4.484375 2.53125 -4.316406 2.28125 -3.984375 C 2.03125 -3.660156 1.90625 -3.269531 1.90625 -2.8125 L 1.90625 0 L 0.828125 0 L 0.828125 -5.390625 Z M 1.90625 -5.390625 "/>
</g>
<g id="glyph-0-4">
<path d="M 5.34375 -2.609375 L 1.5625 -2.609375 C 1.582031 -2.085938 1.753906 -1.675781 2.078125 -1.375 C 2.398438 -1.070312 2.8125 -0.921875 3.3125 -0.921875 C 4.007812 -0.921875 4.65625 -1.140625 5.25 -1.578125 L 5.25 -0.53125 C 4.925781 -0.3125 4.601562 -0.15625 4.28125 -0.0625 C 3.957031 0.03125 3.578125 0.078125 3.140625 0.078125 C 2.546875 0.078125 2.066406 -0.0390625 1.703125 -0.28125 C 1.335938 -0.53125 1.046875 -0.863281 0.828125 -1.28125 C 0.609375 -1.695312 0.5 -2.175781 0.5 -2.71875 C 0.5 -3.539062 0.726562 -4.207031 1.1875 -4.71875 C 1.65625 -5.238281 2.257812 -5.5 3 -5.5 C 3.71875 -5.5 4.285156 -5.25 4.703125 -4.75 C 5.128906 -4.25 5.34375 -3.578125 5.34375 -2.734375 Z M 1.578125 -3.234375 L 4.296875 -3.234375 C 4.265625 -3.660156 4.132812 -3.988281 3.90625 -4.21875 C 3.6875 -4.457031 3.382812 -4.578125 3 -4.578125 C 2.613281 -4.578125 2.296875 -4.457031 2.046875 -4.21875 C 1.804688 -3.988281 1.648438 -3.660156 1.578125 -3.234375 Z M 1.578125 -3.234375 "/>
</g>
<g id="glyph-0-5">
<path d="M 0.5 -0.390625 L 0.5 -1.53125 C 0.789062 -1.320312 1.09375 -1.148438 1.40625 -1.015625 C 1.726562 -0.890625 1.992188 -0.828125 2.203125 -0.828125 C 2.429688 -0.828125 2.625 -0.878906 2.78125 -0.984375 C 2.945312 -1.097656 3.03125 -1.234375 3.03125 -1.390625 C 3.03125 -1.546875 2.976562 -1.671875 2.875 -1.765625 C 2.769531 -1.867188 2.546875 -2.019531 2.203125 -2.21875 C 1.515625 -2.601562 1.0625 -2.929688 0.84375 -3.203125 C 0.632812 -3.472656 0.53125 -3.769531 0.53125 -4.09375 C 0.53125 -4.507812 0.691406 -4.847656 1.015625 -5.109375 C 1.335938 -5.367188 1.75 -5.5 2.25 -5.5 C 2.78125 -5.5 3.320312 -5.347656 3.875 -5.046875 L 3.875 -4 C 3.25 -4.382812 2.734375 -4.578125 2.328125 -4.578125 C 2.117188 -4.578125 1.953125 -4.53125 1.828125 -4.4375 C 1.703125 -4.351562 1.640625 -4.238281 1.640625 -4.09375 C 1.640625 -3.96875 1.695312 -3.847656 1.8125 -3.734375 C 1.925781 -3.617188 2.128906 -3.484375 2.421875 -3.328125 L 2.796875 -3.109375 C 3.691406 -2.597656 4.140625 -2.035156 4.140625 -1.421875 C 4.140625 -0.972656 3.96875 -0.609375 3.625 -0.328125 C 3.28125 -0.046875 2.835938 0.09375 2.296875 0.09375 C 1.972656 0.09375 1.6875 0.0625 1.4375 0 C 1.1875 -0.0703125 0.875 -0.203125 0.5 -0.390625 Z M 0.5 -0.390625 "/>
</g>
<g id="glyph-0-6">
<path d="M 1.828125 -5.390625 L 1.828125 -4.703125 C 2.296875 -5.234375 2.835938 -5.5 3.453125 -5.5 C 3.785156 -5.5 4.09375 -5.410156 4.375 -5.234375 C 4.664062 -5.054688 4.882812 -4.816406 5.03125 -4.515625 C 5.1875 -4.210938 5.265625 -3.734375 5.265625 -3.078125 L 5.265625 0 L 4.203125 0 L 4.203125 -3.078125 C 4.203125 -3.617188 4.117188 -4.007812 3.953125 -4.25 C 3.785156 -4.488281 3.503906 -4.609375 3.109375 -4.609375 C 2.597656 -4.609375 2.171875 -4.351562 1.828125 -3.84375 L 1.828125 0 L 0.734375 0 L 0.734375 -5.390625 Z M 1.828125 -5.390625 "/>
</g>
<g id="glyph-0-7">
<path d="M 0 -4.53125 L 2 -6.5 L 2 -5.390625 L 3.703125 -5.390625 L 3.703125 -4.4375 L 2 -4.4375 L 2 -1.78125 C 2 -1.164062 2.253906 -0.859375 2.765625 -0.859375 C 3.148438 -0.859375 3.554688 -0.988281 3.984375 -1.25 L 3.984375 -0.25 C 3.578125 -0.0195312 3.128906 0.09375 2.640625 0.09375 C 2.148438 0.09375 1.742188 -0.046875 1.421875 -0.328125 C 1.316406 -0.421875 1.234375 -0.519531 1.171875 -0.625 C 1.109375 -0.726562 1.050781 -0.867188 1 -1.046875 C 0.957031 -1.222656 0.9375 -1.554688 0.9375 -2.046875 L 0.9375 -4.4375 L 0 -4.4375 Z M 0 -4.53125 "/>
</g>
<g id="glyph-0-8">
</g>
<g id="glyph-0-9">
<path d="M 6.078125 -8.1875 L 7.25 -8.1875 L 3.796875 0.03125 L 3.53125 0.03125 L 0 -8.1875 L 1.171875 -8.1875 L 3.640625 -2.4375 Z M 6.078125 -8.1875 "/>
</g>
<g id="glyph-0-10">
<path d="M 4.140625 -3.234375 L 4.140625 -0.953125 C 4.140625 -0.765625 4.203125 -0.671875 4.328125 -0.671875 C 4.460938 -0.671875 4.664062 -0.769531 4.9375 -0.96875 L 4.9375 -0.3125 C 4.695312 -0.15625 4.5 -0.0507812 4.34375 0 C 4.195312 0.0625 4.046875 0.09375 3.890625 0.09375 C 3.429688 0.09375 3.160156 -0.0859375 3.078125 -0.453125 C 2.628906 -0.0976562 2.148438 0.078125 1.640625 0.078125 C 1.265625 0.078125 0.953125 -0.0390625 0.703125 -0.28125 C 0.453125 -0.53125 0.328125 -0.84375 0.328125 -1.21875 C 0.328125 -1.5625 0.445312 -1.863281 0.6875 -2.125 C 0.9375 -2.394531 1.285156 -2.609375 1.734375 -2.765625 L 3.09375 -3.234375 L 3.09375 -3.53125 C 3.09375 -4.175781 2.769531 -4.5 2.125 -4.5 C 1.539062 -4.5 0.972656 -4.195312 0.421875 -3.59375 L 0.421875 -4.765625 C 0.835938 -5.253906 1.429688 -5.5 2.203125 -5.5 C 2.785156 -5.5 3.253906 -5.347656 3.609375 -5.046875 C 3.722656 -4.941406 3.828125 -4.804688 3.921875 -4.640625 C 4.015625 -4.484375 4.070312 -4.320312 4.09375 -4.15625 C 4.125 -4 4.140625 -3.691406 4.140625 -3.234375 Z M 3.09375 -1.0625 L 3.09375 -2.671875 L 2.375 -2.390625 C 2.007812 -2.242188 1.753906 -2.097656 1.609375 -1.953125 C 1.460938 -1.804688 1.390625 -1.625 1.390625 -1.40625 C 1.390625 -1.1875 1.457031 -1.003906 1.59375 -0.859375 C 1.738281 -0.722656 1.925781 -0.65625 2.15625 -0.65625 C 2.488281 -0.65625 2.800781 -0.789062 3.09375 -1.0625 Z M 3.09375 -1.0625 "/>
</g>
<g id="glyph-0-11">
<path d="M 0.78125 -8.1875 L 1.84375 -8.1875 L 1.84375 0 L 0.78125 0 Z M 0.78125 -8.1875 "/>
</g>
<g id="glyph-0-12">
<path d="M 4.1875 0 L 4.1875 -0.6875 C 3.957031 -0.4375 3.695312 -0.242188 3.40625 -0.109375 C 3.125 0.0234375 2.835938 0.09375 2.546875 0.09375 C 2.203125 0.09375 1.882812 0.0078125 1.59375 -0.15625 C 1.3125 -0.332031 1.097656 -0.566406 0.953125 -0.859375 C 0.804688 -1.148438 0.734375 -1.628906 0.734375 -2.296875 L 0.734375 -5.390625 L 1.796875 -5.390625 L 1.796875 -2.3125 C 1.796875 -1.75 1.875 -1.351562 2.03125 -1.125 C 2.195312 -0.90625 2.484375 -0.796875 2.890625 -0.796875 C 3.398438 -0.796875 3.832031 -1.039062 4.1875 -1.53125 L 4.1875 -5.390625 L 5.25 -5.390625 L 5.25 0 Z M 4.1875 0 "/>
</g>
<g id="glyph-0-13">
<path d="M 0.59375 1.421875 L 0.59375 1.203125 C 0.757812 1.035156 0.878906 0.863281 0.953125 0.6875 C 1.023438 0.519531 1.066406 0.289062 1.078125 0 C 0.660156 -0.125 0.453125 -0.378906 0.453125 -0.765625 C 0.453125 -0.972656 0.523438 -1.15625 0.671875 -1.3125 C 0.816406 -1.46875 0.984375 -1.546875 1.171875 -1.546875 C 1.410156 -1.546875 1.609375 -1.441406 1.765625 -1.234375 C 1.921875 -1.023438 2 -0.753906 2 -0.421875 C 2 0.015625 1.875 0.394531 1.625 0.71875 C 1.375 1.050781 1.03125 1.285156 0.59375 1.421875 Z M 0.59375 1.421875 "/>
</g>
<g id="glyph-0-14">
<path d="M 2.5 -5.328125 L 5.984375 -5.328125 L 5.8125 -4.421875 L 2.34375 -4.421875 C 2.34375 -4.328125 2.34375 -4.226562 2.34375 -4.125 C 2.34375 -4.019531 2.34375 -3.898438 2.34375 -3.765625 L 5.6875 -3.765625 L 5.515625 -2.859375 L 2.5 -2.859375 C 2.851562 -1.597656 3.585938 -0.96875 4.703125 -0.96875 C 5.410156 -0.96875 6.085938 -1.238281 6.734375 -1.78125 L 6.734375 -0.5 C 6.171875 -0.09375 5.484375 0.109375 4.671875 0.109375 C 3.773438 0.109375 3.035156 -0.148438 2.453125 -0.671875 C 1.867188 -1.203125 1.476562 -1.929688 1.28125 -2.859375 L 0.328125 -2.859375 L 0.5 -3.765625 L 1.171875 -3.765625 C 1.171875 -4.054688 1.175781 -4.273438 1.1875 -4.421875 L 0.328125 -4.421875 L 0.5 -5.328125 L 1.3125 -5.328125 C 1.550781 -6.242188 1.972656 -6.96875 2.578125 -7.5 C 3.179688 -8.03125 3.898438 -8.296875 4.734375 -8.296875 C 5.347656 -8.296875 6.03125 -8.164062 6.78125 -7.90625 L 6.546875 -6.78125 C 5.867188 -7.070312 5.25 -7.21875 4.6875 -7.21875 C 3.59375 -7.21875 2.863281 -6.585938 2.5 -5.328125 Z M 2.5 -5.328125 "/>
</g>
<g id="glyph-0-15">
<path d="M 0.921875 -8.1875 L 2.09375 -8.1875 L 2.09375 0 L 0.921875 0 Z M 0.921875 -8.1875 "/>
</g>
<g id="glyph-0-16">
<path d="M 4.0625 -5.390625 L 5.203125 -5.390625 L 2.828125 0.09375 L 2.46875 0.09375 L 0.03125 -5.390625 L 1.203125 -5.390625 L 2.65625 -2.078125 Z M 4.0625 -5.390625 "/>
</g>
<g id="glyph-0-17">
<path d="M 5.171875 -3.921875 L 5.171875 0 L 4.109375 0 L 4.109375 -3 C 4.109375 -3.59375 4.023438 -4.007812 3.859375 -4.25 C 3.703125 -4.488281 3.425781 -4.609375 3.03125 -4.609375 C 2.800781 -4.609375 2.59375 -4.554688 2.40625 -4.453125 C 2.226562 -4.347656 2.019531 -4.171875 1.78125 -3.921875 L 1.78125 0 L 0.703125 0 L 0.703125 -5.390625 L 1.78125 -5.390625 L 1.78125 -4.6875 C 2.320312 -5.226562 2.851562 -5.5 3.375 -5.5 C 4.050781 -5.5 4.578125 -5.175781 4.953125 -4.53125 C 5.523438 -5.1875 6.125 -5.515625 6.75 -5.515625 C 7.269531 -5.515625 7.695312 -5.320312 8.03125 -4.9375 C 8.375 -4.550781 8.546875 -3.96875 8.546875 -3.1875 L 8.546875 0 L 7.484375 0 L 7.484375 -3.1875 C 7.484375 -3.644531 7.390625 -3.988281 7.203125 -4.21875 C 7.015625 -4.457031 6.75 -4.578125 6.40625 -4.578125 C 5.96875 -4.578125 5.554688 -4.359375 5.171875 -3.921875 Z M 5.171875 -3.921875 "/>
</g>
<g id="glyph-0-18">
<path d="M 0.9375 0 L 0.9375 -8.1875 L 2.984375 -8.1875 C 3.816406 -8.1875 4.472656 -7.976562 4.953125 -7.5625 C 5.441406 -7.15625 5.6875 -6.601562 5.6875 -5.90625 C 5.6875 -5.425781 5.566406 -5.015625 5.328125 -4.671875 C 5.085938 -4.328125 4.75 -4.066406 4.3125 -3.890625 C 4.570312 -3.722656 4.828125 -3.488281 5.078125 -3.1875 C 5.328125 -2.894531 5.675781 -2.378906 6.125 -1.640625 C 6.414062 -1.171875 6.644531 -0.820312 6.8125 -0.59375 L 7.25 0 L 5.859375 0 L 5.5 -0.546875 C 5.488281 -0.554688 5.460938 -0.585938 5.421875 -0.640625 L 5.203125 -0.96875 L 4.828125 -1.5625 L 4.4375 -2.203125 C 4.195312 -2.535156 3.972656 -2.800781 3.765625 -3 C 3.566406 -3.195312 3.382812 -3.335938 3.21875 -3.421875 C 3.0625 -3.515625 2.796875 -3.5625 2.421875 -3.5625 L 2.109375 -3.5625 L 2.109375 0 Z M 2.46875 -7.1875 L 2.109375 -7.1875 L 2.109375 -4.609375 L 2.5625 -4.609375 C 3.15625 -4.609375 3.5625 -4.65625 3.78125 -4.75 C 4 -4.851562 4.171875 -5.007812 4.296875 -5.21875 C 4.421875 -5.425781 4.484375 -5.660156 4.484375 -5.921875 C 4.484375 -6.179688 4.410156 -6.414062 4.265625 -6.625 C 4.128906 -6.832031 3.9375 -6.976562 3.6875 -7.0625 C 3.445312 -7.144531 3.039062 -7.1875 2.46875 -7.1875 Z M 2.46875 -7.1875 "/>
</g>
<g id="glyph-0-19">
<path d="M 1.3125 -7.65625 C 1.488281 -7.65625 1.640625 -7.59375 1.765625 -7.46875 C 1.890625 -7.351562 1.953125 -7.207031 1.953125 -7.03125 C 1.953125 -6.863281 1.890625 -6.71875 1.765625 -6.59375 C 1.640625 -6.46875 1.488281 -6.40625 1.3125 -6.40625 C 1.144531 -6.40625 1 -6.46875 0.875 -6.59375 C 0.75 -6.71875 0.6875 -6.863281 0.6875 -7.03125 C 0.6875 -7.195312 0.75 -7.34375 0.875 -7.46875 C 1 -7.59375 1.144531 -7.65625 1.3125 -7.65625 Z M 0.78125 -5.390625 L 1.84375 -5.390625 L 1.84375 0 L 0.78125 0 Z M 0.78125 -5.390625 "/>
</g>
<g id="glyph-0-20">
<path d="M 4.265625 -5.390625 L 5.53125 -5.390625 L 3.234375 -2.75 L 6 0 L 4.578125 0 L 1.875 -2.75 Z M 0.75 -8.1875 L 1.828125 -8.1875 L 1.828125 0 L 0.75 0 Z M 0.75 -8.1875 "/>
</g>
<g id="glyph-0-21">
<path d="M 0.203125 -8.203125 L 7.046875 -8.203125 L 7.046875 -7.15625 L 4.1875 -7.15625 L 4.1875 0 L 3.015625 0 L 3.015625 -7.15625 L 0.203125 -7.15625 Z M 0.203125 -8.203125 "/>
</g>
<g id="glyph-0-22">
<path d="M 3.328125 -5.40625 C 4.148438 -5.40625 4.832031 -5.140625 5.375 -4.609375 C 5.914062 -4.078125 6.1875 -3.410156 6.1875 -2.609375 C 6.1875 -1.835938 5.910156 -1.191406 5.359375 -0.671875 C 4.816406 -0.160156 4.125 0.09375 3.28125 0.09375 C 2.476562 0.09375 1.804688 -0.164062 1.265625 -0.6875 C 0.722656 -1.207031 0.453125 -1.859375 0.453125 -2.640625 C 0.453125 -3.429688 0.722656 -4.085938 1.265625 -4.609375 C 1.816406 -5.140625 2.503906 -5.40625 3.328125 -5.40625 Z M 3.28125 -4.4375 C 2.769531 -4.4375 2.347656 -4.269531 2.015625 -3.9375 C 1.691406 -3.601562 1.53125 -3.175781 1.53125 -2.65625 C 1.53125 -2.132812 1.695312 -1.710938 2.03125 -1.390625 C 2.363281 -1.066406 2.796875 -0.90625 3.328125 -0.90625 C 3.847656 -0.90625 4.273438 -1.066406 4.609375 -1.390625 C 4.941406 -1.722656 5.109375 -2.148438 5.109375 -2.671875 C 5.109375 -3.179688 4.929688 -3.601562 4.578125 -3.9375 C 4.234375 -4.269531 3.800781 -4.4375 3.28125 -4.4375 Z M 3.28125 -4.4375 "/>
</g>
<g id="glyph-0-23">
<path d="M 2.9375 -3.4375 L 2.046875 -3.96875 C 1.484375 -4.3125 1.082031 -4.644531 0.84375 -4.96875 C 0.613281 -5.300781 0.5 -5.6875 0.5 -6.125 C 0.5 -6.757812 0.71875 -7.28125 1.15625 -7.6875 C 1.601562 -8.09375 2.1875 -8.296875 2.90625 -8.296875 C 3.59375 -8.296875 4.21875 -8.101562 4.78125 -7.71875 L 4.78125 -6.390625 C 4.195312 -6.953125 3.566406 -7.234375 2.890625 -7.234375 C 2.503906 -7.234375 2.1875 -7.144531 1.9375 -6.96875 C 1.695312 -6.789062 1.578125 -6.5625 1.578125 -6.28125 C 1.578125 -6.039062 1.664062 -5.8125 1.84375 -5.59375 C 2.019531 -5.382812 2.3125 -5.160156 2.71875 -4.921875 L 3.609375 -4.390625 C 4.609375 -3.796875 5.109375 -3.039062 5.109375 -2.125 C 5.109375 -1.46875 4.890625 -0.929688 4.453125 -0.515625 C 4.015625 -0.109375 3.441406 0.09375 2.734375 0.09375 C 1.929688 0.09375 1.195312 -0.15625 0.53125 -0.65625 L 0.53125 -2.140625 C 1.164062 -1.335938 1.894531 -0.9375 2.71875 -0.9375 C 3.09375 -0.9375 3.398438 -1.035156 3.640625 -1.234375 C 3.890625 -1.441406 4.015625 -1.703125 4.015625 -2.015625 C 4.015625 -2.515625 3.65625 -2.988281 2.9375 -3.4375 Z M 2.9375 -3.4375 "/>
</g>
<g id="glyph-0-24">
<path d="M 4.0625 -5.390625 L 5.25 -5.390625 L 1.4375 2.75 L 0.25 2.75 L 2.09375 -1.15625 L 0 -5.390625 L 1.21875 -5.390625 L 2.671875 -2.34375 Z M 4.0625 -5.390625 "/>
</g>
<g id="glyph-0-25">
<path d="M 0.484375 -3.234375 L 3.40625 -3.234375 L 3.40625 -2.09375 L 0.484375 -2.09375 Z M 0.484375 -3.234375 "/>
</g>
<g id="glyph-0-26">
<path d="M 3.078125 -8.296875 L 3.734375 -8.296875 C 3.242188 -7.566406 2.890625 -6.941406 2.671875 -6.421875 C 2.453125 -5.910156 2.285156 -5.320312 2.171875 -4.65625 C 2.054688 -3.988281 2 -3.34375 2 -2.71875 C 2 -0.59375 2.578125 1.226562 3.734375 2.75 L 3.078125 2.75 L 2.890625 2.53125 C 2.453125 2 2.125 1.5625 1.90625 1.21875 C 1.695312 0.882812 1.488281 0.445312 1.28125 -0.09375 C 0.9375 -0.96875 0.765625 -1.859375 0.765625 -2.765625 C 0.765625 -3.679688 0.929688 -4.566406 1.265625 -5.421875 C 1.609375 -6.285156 2.210938 -7.242188 3.078125 -8.296875 Z M 3.078125 -8.296875 "/>
</g>
<g id="glyph-0-27">
<path d="M 0.6875 2.75 L 0.6875 -5.390625 L 2.5625 -5.390625 C 3.507812 -5.390625 4.25 -5.148438 4.78125 -4.671875 C 5.320312 -4.203125 5.59375 -3.535156 5.59375 -2.671875 C 5.59375 -1.867188 5.335938 -1.207031 4.828125 -0.6875 C 4.328125 -0.164062 3.691406 0.09375 2.921875 0.09375 C 2.578125 0.09375 2.195312 0.015625 1.78125 -0.140625 L 1.78125 2.75 Z M 2.53125 -4.390625 L 1.78125 -4.390625 L 1.78125 -1.078125 C 2.101562 -0.910156 2.445312 -0.828125 2.8125 -0.828125 C 3.3125 -0.828125 3.71875 -1 4.03125 -1.34375 C 4.351562 -1.695312 4.515625 -2.144531 4.515625 -2.6875 C 4.515625 -3.039062 4.4375 -3.351562 4.28125 -3.625 C 4.132812 -3.894531 3.929688 -4.085938 3.671875 -4.203125 C 3.410156 -4.328125 3.03125 -4.390625 2.53125 -4.390625 Z M 2.53125 -4.390625 "/>
</g>
<g id="glyph-0-28">
<path d="M 0.796875 2.75 L 0.140625 2.75 C 0.648438 1.976562 1.007812 1.328125 1.21875 0.796875 C 1.4375 0.265625 1.597656 -0.316406 1.703125 -0.953125 C 1.816406 -1.597656 1.875 -2.210938 1.875 -2.796875 C 1.875 -3.472656 1.8125 -4.128906 1.6875 -4.765625 C 1.5625 -5.398438 1.375 -6.003906 1.125 -6.578125 C 0.882812 -7.148438 0.554688 -7.722656 0.140625 -8.296875 L 0.796875 -8.296875 L 0.984375 -8.078125 C 1.421875 -7.554688 1.742188 -7.125 1.953125 -6.78125 C 2.171875 -6.445312 2.382812 -6.003906 2.59375 -5.453125 C 2.9375 -4.585938 3.109375 -3.691406 3.109375 -2.765625 C 3.109375 -1.890625 2.953125 -1.039062 2.640625 -0.21875 C 2.492188 0.1875 2.300781 0.585938 2.0625 0.984375 C 1.832031 1.390625 1.410156 1.976562 0.796875 2.75 Z M 0.796875 2.75 "/>
</g>
</g>
<g id="compositing-group-0" transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="0"/>
<path fill="none" stroke-width="1.337322" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.339844 33.183594 L 28.339844 203.503906 L 309.035156 203.503906 "/>
</g>
<mask id="mask-0">
<use xlink:href="#compositing-group-0"/>
</mask>
<mask id="mask-1">
<use xlink:href="#compositing-group-0" filter="url(#filter-remove-color-and-invert-alpha)"/>
</mask>
<g id="compositing-group-1" mask="url(#mask-0)">
<g transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
</g>
<g id="compositing-group-2" mask="url(#mask-1)">
<g transform="translate(34.0152, 22.6768)">
</g>
</g>
<g id="compositing-group-3" transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="0"/>
<path fill="none" stroke-width="1.41" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-dasharray="6 3" stroke-miterlimit="10" d="M 36.210938 40.933594 L 36.214844 42.097656 L 36.292969 45.402344 L 36.523438 50.59375 L 36.996094 57.394531 L 37.800781 65.550781 L 38.351562 70.050781 L 39.015625 74.789062 L 39.804688 79.730469 L 40.730469 84.847656 L 41.804688 90.101562 L 43.035156 95.457031 L 44.429688 100.890625 L 46.007812 106.359375 L 47.773438 111.835938 L 48.734375 114.566406 L 49.742188 117.285156 L 50.804688 119.988281 L 51.917969 122.671875 L 53.089844 125.332031 L 54.320312 127.964844 L 55.605469 130.566406 L 56.953125 133.132812 L 58.359375 135.660156 L 59.828125 138.140625 L 61.359375 140.574219 L 62.957031 142.957031 L 64.621094 145.28125 L 66.351562 147.542969 L 68.152344 149.742188 L 69.078125 150.816406 L 70.023438 151.875 L 70.984375 152.910156 L 71.964844 153.929688 L 72.964844 154.929688 L 73.980469 155.910156 L 75.015625 156.867188 L 76.070312 157.808594 L 77.144531 158.726562 L 78.234375 159.621094 L 79.347656 160.492188 L 80.476562 161.34375 L 81.628906 162.167969 L 82.796875 162.972656 L 83.988281 163.75 L 85.199219 164.503906 L 86.429688 165.230469 L 87.679688 165.929688 L 88.949219 166.605469 L 90.242188 167.253906 L 91.554688 167.875 L 92.890625 168.464844 L 95.640625 169.605469 L 98.507812 170.714844 L 101.484375 171.792969 L 104.574219 172.84375 L 111.046875 174.859375 L 117.886719 176.757812 L 125.054688 178.546875 L 132.503906 180.230469 L 140.195312 181.8125 L 148.09375 183.289062 L 164.324219 185.957031 L 180.871094 188.261719 L 213.59375 191.875 L 243.628906 194.335938 L 268.339844 195.84375 L 291.269531 196.804688 "/>
</g>
<mask id="mask-2">
<use xlink:href="#compositing-group-3"/>
</mask>
<mask id="mask-3">
<use xlink:href="#compositing-group-3" filter="url(#filter-remove-color-and-invert-alpha)"/>
</mask>
<g id="compositing-group-4" mask="url(#mask-2)">
<g transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
</g>
<g id="compositing-group-5" mask="url(#mask-3)">
<g transform="translate(34.0152, 22.6768)">
<g filter="url(#filter-0)" transform="translate(-34.0152, -22.6768)">
<rect x="0" y="0" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="190.273336" y="223.22078"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-2" x="14.17" y="25.320391"/>
<use xlink:href="#glyph-0-3" x="20.17" y="25.320391"/>
<use xlink:href="#glyph-0-4" x="25.17" y="25.320391"/>
<use xlink:href="#glyph-0-5" x="31.17" y="25.320391"/>
<use xlink:href="#glyph-0-4" x="36.17" y="25.320391"/>
<use xlink:href="#glyph-0-6" x="42.17" y="25.320391"/>
<use xlink:href="#glyph-0-7" x="48.17" y="25.320391"/>
<use xlink:href="#glyph-0-8" x="52.17" y="25.320391"/>
<use xlink:href="#glyph-0-9" x="53.17" y="25.320391"/>
<use xlink:href="#glyph-0-10" x="60.17" y="25.320391"/>
<use xlink:href="#glyph-0-11" x="65.17" y="25.320391"/>
<use xlink:href="#glyph-0-12" x="68.17" y="25.320391"/>
<use xlink:href="#glyph-0-4" x="74.17" y="25.320391"/>
<use xlink:href="#glyph-0-13" x="80.17" y="25.320391"/>
<use xlink:href="#glyph-0-8" x="81.17" y="25.320391"/>
<use xlink:href="#glyph-0-14" x="85.17" y="25.320391"/>
</g>
</g>
</g>
<g id="compositing-group-6" transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="0"/>
<path fill="none" stroke-width="1.41" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-miterlimit="10" d="M 42.511719 42.511719 L 42.5 42.875 L 42.480469 43.929688 L 42.484375 45.628906 L 42.527344 47.914062 L 42.644531 50.742188 L 42.855469 54.058594 L 43.1875 57.8125 L 43.664062 61.949219 L 44.3125 66.421875 L 45.15625 71.179688 L 45.660156 73.648438 L 46.222656 76.167969 L 46.84375 78.734375 L 47.53125 81.339844 L 48.289062 83.976562 L 49.117188 86.640625 L 50.019531 89.320312 L 50.996094 92.015625 L 52.054688 94.71875 L 53.199219 97.421875 L 54.429688 100.121094 L 55.75 102.804688 L 57.164062 105.472656 L 58.671875 108.113281 L 60.28125 110.722656 L 61.125 112.015625 L 61.996094 113.296875 L 62.890625 114.566406 L 63.8125 115.824219 L 64.761719 117.070312 L 65.738281 118.300781 L 66.746094 119.519531 L 67.777344 120.722656 L 68.839844 121.90625 L 69.933594 123.078125 L 71.054688 124.230469 L 72.207031 125.363281 L 73.386719 126.480469 L 74.601562 127.574219 L 75.84375 128.648438 L 77.121094 129.703125 L 78.425781 130.734375 L 79.765625 131.742188 L 81.140625 132.726562 L 82.546875 133.683594 L 83.984375 134.617188 L 85.457031 135.527344 L 86.964844 136.40625 L 88.507812 137.257812 L 90.085938 138.082031 L 91.699219 138.878906 L 93.347656 139.640625 L 95.03125 140.375 L 96.753906 141.078125 L 98.511719 141.746094 L 100.308594 142.378906 L 102.144531 142.980469 L 104.019531 143.546875 L 105.929688 144.078125 L 107.878906 144.570312 L 109.871094 145.027344 L 111.898438 145.445312 L 113.96875 145.824219 L 116.082031 146.164062 L 118.234375 146.460938 L 120.425781 146.71875 L 122.664062 146.933594 L 124.941406 147.101562 L 127.261719 147.230469 L 129.625 147.3125 L 132.03125 147.351562 L 134.480469 147.34375 L 136.976562 147.285156 L 139.515625 147.183594 L 142.097656 147.03125 L 144.730469 146.828125 L 147.402344 146.578125 L 152.894531 145.917969 L 158.574219 145.050781 L 164.441406 143.964844 L 291.710938 118.449219 "/>
</g>
<mask id="mask-4">
<use xlink:href="#compositing-group-6"/>
</mask>
<mask id="mask-5">
<use xlink:href="#compositing-group-6" filter="url(#filter-remove-color-and-invert-alpha)"/>
</mask>
<g id="compositing-group-7" mask="url(#mask-4)">
<g transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
</g>
<g id="compositing-group-8" mask="url(#mask-5)">
<g transform="translate(34.0152, 22.6768)">
<g filter="url(#filter-1)" transform="translate(-34.0152, -22.6768)">
<rect x="0" y="0" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
</g>
</g>
<g id="compositing-group-9" transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="0"/>
<path fill="none" stroke-width="1.41" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-dasharray="0.5 3" stroke-miterlimit="10" d="M 206.023438 30.871094 L 233.75 30.871094 "/>
</g>
<mask id="mask-6">
<use xlink:href="#compositing-group-9"/>
</mask>
<mask id="mask-7">
<use xlink:href="#compositing-group-9" filter="url(#filter-remove-color-and-invert-alpha)"/>
</mask>
<g id="compositing-group-10" mask="url(#mask-6)">
<g transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
</g>
<g id="compositing-group-11" mask="url(#mask-7)">
<g transform="translate(34.0152, 22.6768)">
<g filter="url(#filter-2)" transform="translate(-34.0152, -22.6768)">
<rect x="0" y="0" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-15" x="243.512068" y="33.262466"/>
<use xlink:href="#glyph-0-6" x="246.512068" y="33.262466"/>
<use xlink:href="#glyph-0-16" x="252.512068" y="33.262466"/>
<use xlink:href="#glyph-0-4" x="257.512068" y="33.262466"/>
<use xlink:href="#glyph-0-5" x="263.512068" y="33.262466"/>
<use xlink:href="#glyph-0-7" x="268.512068" y="33.262466"/>
<use xlink:href="#glyph-0-17" x="272.512068" y="33.262466"/>
<use xlink:href="#glyph-0-4" x="281.512068" y="33.262466"/>
<use xlink:href="#glyph-0-6" x="287.512068" y="33.262466"/>
<use xlink:href="#glyph-0-7" x="293.512068" y="33.262466"/>
<use xlink:href="#glyph-0-5" x="297.512068" y="33.262466"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-18" x="243.512068" y="47.178482"/>
<use xlink:href="#glyph-0-19" x="250.512068" y="47.178482"/>
<use xlink:href="#glyph-0-5" x="253.512068" y="47.178482"/>
<use xlink:href="#glyph-0-20" x="258.512068" y="47.178482"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-21" x="243.512068" y="61.094497"/>
<use xlink:href="#glyph-0-22" x="248.512068" y="61.094497"/>
<use xlink:href="#glyph-0-7" x="255.512068" y="61.094497"/>
<use xlink:href="#glyph-0-10" x="259.512068" y="61.094497"/>
<use xlink:href="#glyph-0-11" x="264.512068" y="61.094497"/>
</g>
</g>
</g>
<g id="compositing-group-12" transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="0"/>
<path fill="none" stroke-width="1.41" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-dasharray="6 3" stroke-miterlimit="10" d="M 207.285156 44.734375 L 233.761719 44.734375 "/>
</g>
<mask id="mask-8">
<use xlink:href="#compositing-group-12"/>
</mask>
<mask id="mask-9">
<use xlink:href="#compositing-group-12" filter="url(#filter-remove-color-and-invert-alpha)"/>
</mask>
<g id="compositing-group-13" mask="url(#mask-8)">
<g transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
</g>
<g id="compositing-group-14" mask="url(#mask-9)">
<g transform="translate(34.0152, 22.6768)">
<g filter="url(#filter-3)" transform="translate(-34.0152, -22.6768)">
<rect x="0" y="0" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
</g>
</g>
<g id="compositing-group-15" transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="0"/>
<path fill="none" stroke-width="1.41" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-miterlimit="10" d="M 206.023438 57.648438 L 232.171875 57.648438 "/>
</g>
<mask id="mask-10">
<use xlink:href="#compositing-group-15"/>
</mask>
<mask id="mask-11">
<use xlink:href="#compositing-group-15" filter="url(#filter-remove-color-and-invert-alpha)"/>
</mask>
<g id="compositing-group-16" mask="url(#mask-10)">
<g transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
</g>
<g id="compositing-group-17" mask="url(#mask-11)">
<g transform="translate(34.0152, 22.6768)">
<g filter="url(#filter-4)" transform="translate(-34.0152, -22.6768)">
<rect x="0" y="0" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
</g>
</g>
<g id="compositing-group-18" transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="0"/>
<path fill="none" stroke-width="1.41" stroke-linecap="round" stroke-linejoin="round" stroke="rgb(100%, 100%, 100%)" stroke-opacity="1" stroke-dasharray="0.5 3" stroke-miterlimit="10" d="M 37.171875 192.476562 L 292.523438 124.058594 "/>
</g>
<mask id="mask-12">
<use xlink:href="#compositing-group-18"/>
</mask>
<mask id="mask-13">
<use xlink:href="#compositing-group-18" filter="url(#filter-remove-color-and-invert-alpha)"/>
</mask>
<g id="compositing-group-19" mask="url(#mask-12)">
<g transform="translate(34.0152, 22.6768)">
<rect x="-34.0152" y="-22.6768" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
</g>
<g id="compositing-group-20" mask="url(#mask-13)">
<g transform="translate(34.0152, 22.6768)">
<g filter="url(#filter-5)" transform="translate(-34.0152, -22.6768)">
<rect x="0" y="0" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
</g>
</g>
</defs>
<g filter="url(#filter-6)" transform="translate(-34.0152, -22.6768)">
<rect x="0" y="0" width="408.1824" height="272.1216" fill="rgb(0%, 0%, 0%)" fill-opacity="1"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-23" x="134.82945" y="217.050383"/>
<use xlink:href="#glyph-0-10" x="139.82945" y="217.050383"/>
<use xlink:href="#glyph-0-1" x="144.82945" y="217.050383"/>
<use xlink:href="#glyph-0-4" x="147.82945" y="217.050383"/>
<use xlink:href="#glyph-0-7" x="153.82945" y="217.050383"/>
<use xlink:href="#glyph-0-24" x="157.82945" y="217.050383"/>
<use xlink:href="#glyph-0-13" x="162.82945" y="217.050383"/>
<use xlink:href="#glyph-0-8" x="163.82945" y="217.050383"/>
<use xlink:href="#glyph-0-25" x="167.82945" y="217.050383"/>
<use xlink:href="#glyph-0-11" x="171.82945" y="217.050383"/>
<use xlink:href="#glyph-0-6" x="174.82945" y="217.050383"/>
<use xlink:href="#glyph-0-26" x="180.82945" y="217.050383"/>
<use xlink:href="#glyph-0-27" x="184.82945" y="217.050383"/>
<use xlink:href="#glyph-0-8" x="190.82945" y="217.050383"/>
<use xlink:href="#glyph-0-28" x="193.82945" y="217.050383"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

View file

@ -0,0 +1,936 @@
<?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">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="576pt" height="432pt" viewBox="0 0 576 432" xmlns="http://www.w3.org/2000/svg" version="1.1">
<metadata>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<cc:Work>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:date>2022-12-19T21:15:04.881036</dc:date>
<dc:format>image/svg+xml</dc:format>
<dc:creator>
<cc:Agent>
<dc:title>Matplotlib v3.5.2, https://matplotlib.org/</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
</rdf:RDF>
</metadata>
<defs>
<style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
</defs>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 432
L 576 432
L 576 0
L 0 0
z
" style="fill: #ffffff"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 72 384.48
L 518.4 384.48
L 518.4 51.84
L 72 51.84
z
" style="fill: #ffffff"/>
</g>
<g id="patch_3">
<path d="M 92.290909 384.48
L 123.034711 384.48
L 123.034711 67.68
L 92.290909 67.68
z
" clip-path="url(#p7d9497572f)" style="fill: #e0ffff; stroke: #000000; stroke-linejoin: miter"/>
</g>
<g id="patch_4">
<path d="M 246.009917 384.48
L 276.753719 384.48
L 276.753719 173.28
L 246.009917 173.28
z
" clip-path="url(#p7d9497572f)" style="fill: #e0ffff; stroke: #000000; stroke-linejoin: miter"/>
</g>
<g id="patch_5">
<path d="M 467.365289 384.48
L 498.109091 384.48
L 498.109091 278.88
L 467.365289 278.88
z
" clip-path="url(#p7d9497572f)" style="fill: #e0ffff; stroke: #000000; stroke-linejoin: miter"/>
</g>
<g id="line2d_1">
<path d="M 76.464 173.28
L 250.56 173.28
" clip-path="url(#p7d9497572f)" style="fill: none; stroke-dasharray: 3.7,1.6; stroke-dashoffset: 0; stroke: #000000"/>
</g>
<g id="line2d_2">
<path d="M 76.464 278.88
L 473.76 278.88
" clip-path="url(#p7d9497572f)" style="fill: none; stroke-dasharray: 3.7,1.6; stroke-dashoffset: 0; stroke: #000000"/>
</g>
<g id="mpl_toolkits.axisartist.axis_artist_1">
<defs>
<path id="md1ef590bf6" d="M 0 0
L 0 -3.5
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#md1ef590bf6" x="107.66281" y="384.48" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g>
<use xlink:href="#md1ef590bf6" x="261.381818" y="384.48" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g>
<use xlink:href="#md1ef590bf6" x="482.73719" y="384.48" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g id="text_1">
<!-- 0 -->
<g transform="translate(102.57281 399.855)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-30" d="M 2034 4250
Q 1547 4250 1301 3770
Q 1056 3291 1056 2328
Q 1056 1369 1301 889
Q 1547 409 2034 409
Q 2525 409 2770 889
Q 3016 1369 3016 2328
Q 3016 3291 2770 3770
Q 2525 4250 2034 4250
z
M 2034 4750
Q 2819 4750 3233 4129
Q 3647 3509 3647 2328
Q 3647 1150 3233 529
Q 2819 -91 2034 -91
Q 1250 -91 836 529
Q 422 1150 422 2328
Q 422 3509 836 4129
Q 1250 4750 2034 4750
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-30"/>
</g>
</g>
<g id="text_2">
<!-- 10 -->
<g transform="translate(251.201818 399.855)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-31" d="M 794 531
L 1825 531
L 1825 4091
L 703 3866
L 703 4441
L 1819 4666
L 2450 4666
L 2450 531
L 3481 531
L 3481 0
L 794 0
L 794 531
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
</g>
</g>
<g id="text_3">
<!-- 100 -->
<g transform="translate(467.46719 399.855)scale(0.16 -0.16)">
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
<g id="patch_6">
<path d="M 72 384.48
L 518.4 384.48
L 533.281966 384.48
" style="fill: none; stroke: #000000; stroke-linecap: round"/>
<path d="M 526.881966 381.28
L 533.281966 384.48
L 526.881966 387.68
L 526.881966 381.28
z
" style="fill: #00a6d6; stroke: #000000; stroke-linecap: round"/>
</g>
<g id="text_4">
<!-- Fatalities -->
<g transform="translate(259.49375 417.24)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-46" d="M 628 4666
L 3309 4666
L 3309 4134
L 1259 4134
L 1259 2759
L 3109 2759
L 3109 2228
L 1259 2228
L 1259 0
L 628 0
L 628 4666
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-61" d="M 2194 1759
Q 1497 1759 1228 1600
Q 959 1441 959 1056
Q 959 750 1161 570
Q 1363 391 1709 391
Q 2188 391 2477 730
Q 2766 1069 2766 1631
L 2766 1759
L 2194 1759
z
M 3341 1997
L 3341 0
L 2766 0
L 2766 531
Q 2569 213 2275 61
Q 1981 -91 1556 -91
Q 1019 -91 701 211
Q 384 513 384 1019
Q 384 1609 779 1909
Q 1175 2209 1959 2209
L 2766 2209
L 2766 2266
Q 2766 2663 2505 2880
Q 2244 3097 1772 3097
Q 1472 3097 1187 3025
Q 903 2953 641 2809
L 641 3341
Q 956 3463 1253 3523
Q 1550 3584 1831 3584
Q 2591 3584 2966 3190
Q 3341 2797 3341 1997
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-74" d="M 1172 4494
L 1172 3500
L 2356 3500
L 2356 3053
L 1172 3053
L 1172 1153
Q 1172 725 1289 603
Q 1406 481 1766 481
L 2356 481
L 2356 0
L 1766 0
Q 1100 0 847 248
Q 594 497 594 1153
L 594 3053
L 172 3053
L 172 3500
L 594 3500
L 594 4494
L 1172 4494
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-6c" d="M 603 4863
L 1178 4863
L 1178 0
L 603 0
L 603 4863
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-69" d="M 603 3500
L 1178 3500
L 1178 0
L 603 0
L 603 3500
z
M 603 4863
L 1178 4863
L 1178 4134
L 603 4134
L 603 4863
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-65" d="M 3597 1894
L 3597 1613
L 953 1613
Q 991 1019 1311 708
Q 1631 397 2203 397
Q 2534 397 2845 478
Q 3156 559 3463 722
L 3463 178
Q 3153 47 2828 -22
Q 2503 -91 2169 -91
Q 1331 -91 842 396
Q 353 884 353 1716
Q 353 2575 817 3079
Q 1281 3584 2069 3584
Q 2775 3584 3186 3129
Q 3597 2675 3597 1894
z
M 3022 2063
Q 3016 2534 2758 2815
Q 2500 3097 2075 3097
Q 1594 3097 1305 2825
Q 1016 2553 972 2059
L 3022 2063
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-73" d="M 2834 3397
L 2834 2853
Q 2591 2978 2328 3040
Q 2066 3103 1784 3103
Q 1356 3103 1142 2972
Q 928 2841 928 2578
Q 928 2378 1081 2264
Q 1234 2150 1697 2047
L 1894 2003
Q 2506 1872 2764 1633
Q 3022 1394 3022 966
Q 3022 478 2636 193
Q 2250 -91 1575 -91
Q 1294 -91 989 -36
Q 684 19 347 128
L 347 722
Q 666 556 975 473
Q 1284 391 1588 391
Q 1994 391 2212 530
Q 2431 669 2431 922
Q 2431 1156 2273 1281
Q 2116 1406 1581 1522
L 1381 1569
Q 847 1681 609 1914
Q 372 2147 372 2553
Q 372 3047 722 3315
Q 1072 3584 1716 3584
Q 2034 3584 2315 3537
Q 2597 3491 2834 3397
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-46"/>
<use xlink:href="#DejaVuSans-61" x="48.394531"/>
<use xlink:href="#DejaVuSans-74" x="109.673828"/>
<use xlink:href="#DejaVuSans-61" x="148.882812"/>
<use xlink:href="#DejaVuSans-6c" x="210.162109"/>
<use xlink:href="#DejaVuSans-69" x="237.945312"/>
<use xlink:href="#DejaVuSans-74" x="265.728516"/>
<use xlink:href="#DejaVuSans-69" x="304.9375"/>
<use xlink:href="#DejaVuSans-65" x="332.720703"/>
<use xlink:href="#DejaVuSans-73" x="394.244141"/>
</g>
</g>
</g>
<g id="mpl_toolkits.axisartist.axis_artist_2">
<defs>
<path id="m7d7e3d96ee" d="M 0 0
L 3.5 0
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#m7d7e3d96ee" x="76.919008" y="67.68" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g>
<use xlink:href="#m7d7e3d96ee" x="76.919008" y="173.28" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g>
<use xlink:href="#m7d7e3d96ee" x="76.919008" y="278.88" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g id="text_5">
<!-- 0.989 -->
<g transform="translate(27.614008 72.095)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-2e" d="M 684 794
L 1344 794
L 1344 0
L 684 0
L 684 794
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-39" d="M 703 97
L 703 672
Q 941 559 1184 500
Q 1428 441 1663 441
Q 2288 441 2617 861
Q 2947 1281 2994 2138
Q 2813 1869 2534 1725
Q 2256 1581 1919 1581
Q 1219 1581 811 2004
Q 403 2428 403 3163
Q 403 3881 828 4315
Q 1253 4750 1959 4750
Q 2769 4750 3195 4129
Q 3622 3509 3622 2328
Q 3622 1225 3098 567
Q 2575 -91 1691 -91
Q 1453 -91 1209 -44
Q 966 3 703 97
z
M 1959 2075
Q 2384 2075 2632 2365
Q 2881 2656 2881 3163
Q 2881 3666 2632 3958
Q 2384 4250 1959 4250
Q 1534 4250 1286 3958
Q 1038 3666 1038 3163
Q 1038 2656 1286 2365
Q 1534 2075 1959 2075
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-38" d="M 2034 2216
Q 1584 2216 1326 1975
Q 1069 1734 1069 1313
Q 1069 891 1326 650
Q 1584 409 2034 409
Q 2484 409 2743 651
Q 3003 894 3003 1313
Q 3003 1734 2745 1975
Q 2488 2216 2034 2216
z
M 1403 2484
Q 997 2584 770 2862
Q 544 3141 544 3541
Q 544 4100 942 4425
Q 1341 4750 2034 4750
Q 2731 4750 3128 4425
Q 3525 4100 3525 3541
Q 3525 3141 3298 2862
Q 3072 2584 2669 2484
Q 3125 2378 3379 2068
Q 3634 1759 3634 1313
Q 3634 634 3220 271
Q 2806 -91 2034 -91
Q 1263 -91 848 271
Q 434 634 434 1313
Q 434 1759 690 2068
Q 947 2378 1403 2484
z
M 1172 3481
Q 1172 3119 1398 2916
Q 1625 2713 2034 2713
Q 2441 2713 2670 2916
Q 2900 3119 2900 3481
Q 2900 3844 2670 4047
Q 2441 4250 2034 4250
Q 1625 4250 1398 4047
Q 1172 3844 1172 3481
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-30"/>
<use xlink:href="#DejaVuSans-2e" x="63.623047"/>
<use xlink:href="#DejaVuSans-39" x="95.410156"/>
<use xlink:href="#DejaVuSans-38" x="159.033203"/>
<use xlink:href="#DejaVuSans-39" x="222.65625"/>
</g>
</g>
<g id="text_6">
<!-- $10^{-2}$ -->
<g transform="translate(35.819008 177.695)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-2212" d="M 678 2272
L 4684 2272
L 4684 1741
L 678 1741
L 678 2272
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-32" d="M 1228 531
L 3431 531
L 3431 0
L 469 0
L 469 531
Q 828 903 1448 1529
Q 2069 2156 2228 2338
Q 2531 2678 2651 2914
Q 2772 3150 2772 3378
Q 2772 3750 2511 3984
Q 2250 4219 1831 4219
Q 1534 4219 1204 4116
Q 875 4013 500 3803
L 500 4441
Q 881 4594 1212 4672
Q 1544 4750 1819 4750
Q 2544 4750 2975 4387
Q 3406 4025 3406 3419
Q 3406 3131 3298 2873
Q 3191 2616 2906 2266
Q 2828 2175 2409 1742
Q 1991 1309 1228 531
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-31" transform="translate(0 0.765625)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(63.623047 0.765625)"/>
<use xlink:href="#DejaVuSans-2212" transform="translate(128.203125 39.046875)scale(0.7)"/>
<use xlink:href="#DejaVuSans-32" transform="translate(186.855469 39.046875)scale(0.7)"/>
</g>
</g>
<g id="text_7">
<!-- $10^{-3}$ -->
<g transform="translate(35.819008 283.295)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-33" d="M 2597 2516
Q 3050 2419 3304 2112
Q 3559 1806 3559 1356
Q 3559 666 3084 287
Q 2609 -91 1734 -91
Q 1441 -91 1130 -33
Q 819 25 488 141
L 488 750
Q 750 597 1062 519
Q 1375 441 1716 441
Q 2309 441 2620 675
Q 2931 909 2931 1356
Q 2931 1769 2642 2001
Q 2353 2234 1838 2234
L 1294 2234
L 1294 2753
L 1863 2753
Q 2328 2753 2575 2939
Q 2822 3125 2822 3475
Q 2822 3834 2567 4026
Q 2313 4219 1838 4219
Q 1578 4219 1281 4162
Q 984 4106 628 3988
L 628 4550
Q 988 4650 1302 4700
Q 1616 4750 1894 4750
Q 2613 4750 3031 4423
Q 3450 4097 3450 3541
Q 3450 3153 3228 2886
Q 3006 2619 2597 2516
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-31" transform="translate(0 0.765625)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(63.623047 0.765625)"/>
<use xlink:href="#DejaVuSans-2212" transform="translate(128.203125 39.046875)scale(0.7)"/>
<use xlink:href="#DejaVuSans-33" transform="translate(186.855469 39.046875)scale(0.7)"/>
</g>
</g>
<g id="patch_7">
<path d="M 76.919008 384.48
L 76.919008 51.84
L 76.919008 36.958034
" style="fill: none; stroke: #000000; stroke-linecap: round"/>
<path d="M 73.719008 43.358034
L 76.919008 36.958034
L 80.119008 43.358034
L 73.719008 43.358034
z
" style="fill: #00a6d6; stroke: #000000; stroke-linecap: round"/>
</g>
<g id="text_8">
<!-- Probability -->
<g transform="translate(19.286508 260.44625)rotate(-90)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-50" d="M 1259 4147
L 1259 2394
L 2053 2394
Q 2494 2394 2734 2622
Q 2975 2850 2975 3272
Q 2975 3691 2734 3919
Q 2494 4147 2053 4147
L 1259 4147
z
M 628 4666
L 2053 4666
Q 2838 4666 3239 4311
Q 3641 3956 3641 3272
Q 3641 2581 3239 2228
Q 2838 1875 2053 1875
L 1259 1875
L 1259 0
L 628 0
L 628 4666
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-72" d="M 2631 2963
Q 2534 3019 2420 3045
Q 2306 3072 2169 3072
Q 1681 3072 1420 2755
Q 1159 2438 1159 1844
L 1159 0
L 581 0
L 581 3500
L 1159 3500
L 1159 2956
Q 1341 3275 1631 3429
Q 1922 3584 2338 3584
Q 2397 3584 2469 3576
Q 2541 3569 2628 3553
L 2631 2963
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-6f" d="M 1959 3097
Q 1497 3097 1228 2736
Q 959 2375 959 1747
Q 959 1119 1226 758
Q 1494 397 1959 397
Q 2419 397 2687 759
Q 2956 1122 2956 1747
Q 2956 2369 2687 2733
Q 2419 3097 1959 3097
z
M 1959 3584
Q 2709 3584 3137 3096
Q 3566 2609 3566 1747
Q 3566 888 3137 398
Q 2709 -91 1959 -91
Q 1206 -91 779 398
Q 353 888 353 1747
Q 353 2609 779 3096
Q 1206 3584 1959 3584
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-62" d="M 3116 1747
Q 3116 2381 2855 2742
Q 2594 3103 2138 3103
Q 1681 3103 1420 2742
Q 1159 2381 1159 1747
Q 1159 1113 1420 752
Q 1681 391 2138 391
Q 2594 391 2855 752
Q 3116 1113 3116 1747
z
M 1159 2969
Q 1341 3281 1617 3432
Q 1894 3584 2278 3584
Q 2916 3584 3314 3078
Q 3713 2572 3713 1747
Q 3713 922 3314 415
Q 2916 -91 2278 -91
Q 1894 -91 1617 61
Q 1341 213 1159 525
L 1159 0
L 581 0
L 581 4863
L 1159 4863
L 1159 2969
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-79" d="M 2059 -325
Q 1816 -950 1584 -1140
Q 1353 -1331 966 -1331
L 506 -1331
L 506 -850
L 844 -850
Q 1081 -850 1212 -737
Q 1344 -625 1503 -206
L 1606 56
L 191 3500
L 800 3500
L 1894 763
L 2988 3500
L 3597 3500
L 2059 -325
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-50"/>
<use xlink:href="#DejaVuSans-72" x="58.552734"/>
<use xlink:href="#DejaVuSans-6f" x="97.416016"/>
<use xlink:href="#DejaVuSans-62" x="158.597656"/>
<use xlink:href="#DejaVuSans-61" x="222.074219"/>
<use xlink:href="#DejaVuSans-62" x="283.353516"/>
<use xlink:href="#DejaVuSans-69" x="346.830078"/>
<use xlink:href="#DejaVuSans-6c" x="374.613281"/>
<use xlink:href="#DejaVuSans-69" x="402.396484"/>
<use xlink:href="#DejaVuSans-74" x="430.179688"/>
<use xlink:href="#DejaVuSans-79" x="469.388672"/>
</g>
</g>
</g>
<g id="text_9">
<!-- Probability density/mass function, $f_{N}(n)$ -->
<g transform="translate(151.296 45.84)scale(0.192 -0.192)">
<defs>
<path id="DejaVuSans-20" transform="scale(0.015625)"/>
<path id="DejaVuSans-64" d="M 2906 2969
L 2906 4863
L 3481 4863
L 3481 0
L 2906 0
L 2906 525
Q 2725 213 2448 61
Q 2172 -91 1784 -91
Q 1150 -91 751 415
Q 353 922 353 1747
Q 353 2572 751 3078
Q 1150 3584 1784 3584
Q 2172 3584 2448 3432
Q 2725 3281 2906 2969
z
M 947 1747
Q 947 1113 1208 752
Q 1469 391 1925 391
Q 2381 391 2643 752
Q 2906 1113 2906 1747
Q 2906 2381 2643 2742
Q 2381 3103 1925 3103
Q 1469 3103 1208 2742
Q 947 2381 947 1747
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-6e" d="M 3513 2113
L 3513 0
L 2938 0
L 2938 2094
Q 2938 2591 2744 2837
Q 2550 3084 2163 3084
Q 1697 3084 1428 2787
Q 1159 2491 1159 1978
L 1159 0
L 581 0
L 581 3500
L 1159 3500
L 1159 2956
Q 1366 3272 1645 3428
Q 1925 3584 2291 3584
Q 2894 3584 3203 3211
Q 3513 2838 3513 2113
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-2f" d="M 1625 4666
L 2156 4666
L 531 -594
L 0 -594
L 1625 4666
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-6d" d="M 3328 2828
Q 3544 3216 3844 3400
Q 4144 3584 4550 3584
Q 5097 3584 5394 3201
Q 5691 2819 5691 2113
L 5691 0
L 5113 0
L 5113 2094
Q 5113 2597 4934 2840
Q 4756 3084 4391 3084
Q 3944 3084 3684 2787
Q 3425 2491 3425 1978
L 3425 0
L 2847 0
L 2847 2094
Q 2847 2600 2669 2842
Q 2491 3084 2119 3084
Q 1678 3084 1418 2786
Q 1159 2488 1159 1978
L 1159 0
L 581 0
L 581 3500
L 1159 3500
L 1159 2956
Q 1356 3278 1631 3431
Q 1906 3584 2284 3584
Q 2666 3584 2933 3390
Q 3200 3197 3328 2828
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-66" d="M 2375 4863
L 2375 4384
L 1825 4384
Q 1516 4384 1395 4259
Q 1275 4134 1275 3809
L 1275 3500
L 2222 3500
L 2222 3053
L 1275 3053
L 1275 0
L 697 0
L 697 3053
L 147 3053
L 147 3500
L 697 3500
L 697 3744
Q 697 4328 969 4595
Q 1241 4863 1831 4863
L 2375 4863
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-75" d="M 544 1381
L 544 3500
L 1119 3500
L 1119 1403
Q 1119 906 1312 657
Q 1506 409 1894 409
Q 2359 409 2629 706
Q 2900 1003 2900 1516
L 2900 3500
L 3475 3500
L 3475 0
L 2900 0
L 2900 538
Q 2691 219 2414 64
Q 2138 -91 1772 -91
Q 1169 -91 856 284
Q 544 659 544 1381
z
M 1991 3584
L 1991 3584
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-63" d="M 3122 3366
L 3122 2828
Q 2878 2963 2633 3030
Q 2388 3097 2138 3097
Q 1578 3097 1268 2742
Q 959 2388 959 1747
Q 959 1106 1268 751
Q 1578 397 2138 397
Q 2388 397 2633 464
Q 2878 531 3122 666
L 3122 134
Q 2881 22 2623 -34
Q 2366 -91 2075 -91
Q 1284 -91 818 406
Q 353 903 353 1747
Q 353 2603 823 3093
Q 1294 3584 2113 3584
Q 2378 3584 2631 3529
Q 2884 3475 3122 3366
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-2c" d="M 750 794
L 1409 794
L 1409 256
L 897 -744
L 494 -744
L 750 256
L 750 794
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-Oblique-66" d="M 3059 4863
L 2969 4384
L 2419 4384
Q 2106 4384 1964 4261
Q 1822 4138 1753 3809
L 1691 3500
L 2638 3500
L 2553 3053
L 1606 3053
L 1013 0
L 434 0
L 1031 3053
L 481 3053
L 563 3500
L 1113 3500
L 1159 3744
Q 1278 4363 1576 4613
Q 1875 4863 2516 4863
L 3059 4863
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-Oblique-4e" d="M 1081 4666
L 1931 4666
L 3219 666
L 4000 4666
L 4616 4666
L 3706 0
L 2853 0
L 1569 4025
L 788 0
L 172 0
L 1081 4666
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-28" d="M 1984 4856
Q 1566 4138 1362 3434
Q 1159 2731 1159 2009
Q 1159 1288 1364 580
Q 1569 -128 1984 -844
L 1484 -844
Q 1016 -109 783 600
Q 550 1309 550 2009
Q 550 2706 781 3412
Q 1013 4119 1484 4856
L 1984 4856
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-Oblique-6e" d="M 3566 2113
L 3156 0
L 2578 0
L 2988 2091
Q 3016 2238 3031 2350
Q 3047 2463 3047 2528
Q 3047 2791 2881 2937
Q 2716 3084 2419 3084
Q 1956 3084 1622 2776
Q 1288 2469 1184 1941
L 800 0
L 225 0
L 903 3500
L 1478 3500
L 1363 2950
Q 1603 3253 1940 3418
Q 2278 3584 2650 3584
Q 3113 3584 3367 3334
Q 3622 3084 3622 2631
Q 3622 2519 3608 2391
Q 3594 2263 3566 2113
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-29" d="M 513 4856
L 1013 4856
Q 1481 4119 1714 3412
Q 1947 2706 1947 2009
Q 1947 1309 1714 600
Q 1481 -109 1013 -844
L 513 -844
Q 928 -128 1133 580
Q 1338 1288 1338 2009
Q 1338 2731 1133 3434
Q 928 4138 513 4856
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-50" transform="translate(0 0.015625)"/>
<use xlink:href="#DejaVuSans-72" transform="translate(60.302734 0.015625)"/>
<use xlink:href="#DejaVuSans-6f" transform="translate(101.416016 0.015625)"/>
<use xlink:href="#DejaVuSans-62" transform="translate(162.597656 0.015625)"/>
<use xlink:href="#DejaVuSans-61" transform="translate(226.074219 0.015625)"/>
<use xlink:href="#DejaVuSans-62" transform="translate(287.353516 0.015625)"/>
<use xlink:href="#DejaVuSans-69" transform="translate(350.830078 0.015625)"/>
<use xlink:href="#DejaVuSans-6c" transform="translate(378.613281 0.015625)"/>
<use xlink:href="#DejaVuSans-69" transform="translate(406.396484 0.015625)"/>
<use xlink:href="#DejaVuSans-74" transform="translate(434.179688 0.015625)"/>
<use xlink:href="#DejaVuSans-79" transform="translate(473.388672 0.015625)"/>
<use xlink:href="#DejaVuSans-20" transform="translate(532.568359 0.015625)"/>
<use xlink:href="#DejaVuSans-64" transform="translate(564.355469 0.015625)"/>
<use xlink:href="#DejaVuSans-65" transform="translate(627.832031 0.015625)"/>
<use xlink:href="#DejaVuSans-6e" transform="translate(689.355469 0.015625)"/>
<use xlink:href="#DejaVuSans-73" transform="translate(752.734375 0.015625)"/>
<use xlink:href="#DejaVuSans-69" transform="translate(804.833984 0.015625)"/>
<use xlink:href="#DejaVuSans-74" transform="translate(832.617188 0.015625)"/>
<use xlink:href="#DejaVuSans-79" transform="translate(871.826172 0.015625)"/>
<use xlink:href="#DejaVuSans-2f" transform="translate(931.005859 0.015625)"/>
<use xlink:href="#DejaVuSans-6d" transform="translate(964.697266 0.015625)"/>
<use xlink:href="#DejaVuSans-61" transform="translate(1062.109375 0.015625)"/>
<use xlink:href="#DejaVuSans-73" transform="translate(1123.388672 0.015625)"/>
<use xlink:href="#DejaVuSans-73" transform="translate(1175.488281 0.015625)"/>
<use xlink:href="#DejaVuSans-20" transform="translate(1227.587891 0.015625)"/>
<use xlink:href="#DejaVuSans-66" transform="translate(1259.375 0.015625)"/>
<use xlink:href="#DejaVuSans-75" transform="translate(1294.580078 0.015625)"/>
<use xlink:href="#DejaVuSans-6e" transform="translate(1357.958984 0.015625)"/>
<use xlink:href="#DejaVuSans-63" transform="translate(1421.337891 0.015625)"/>
<use xlink:href="#DejaVuSans-74" transform="translate(1476.318359 0.015625)"/>
<use xlink:href="#DejaVuSans-69" transform="translate(1515.527344 0.015625)"/>
<use xlink:href="#DejaVuSans-6f" transform="translate(1543.310547 0.015625)"/>
<use xlink:href="#DejaVuSans-6e" transform="translate(1604.492188 0.015625)"/>
<use xlink:href="#DejaVuSans-2c" transform="translate(1667.871094 0.015625)"/>
<use xlink:href="#DejaVuSans-20" transform="translate(1699.658203 0.015625)"/>
<use xlink:href="#DejaVuSans-Oblique-66" transform="translate(1731.445312 0.015625)"/>
<use xlink:href="#DejaVuSans-Oblique-4e" transform="translate(1766.650391 -16.390625)scale(0.7)"/>
<use xlink:href="#DejaVuSans-28" transform="translate(1821.748047 0.015625)"/>
<use xlink:href="#DejaVuSans-Oblique-6e" transform="translate(1860.761719 0.015625)"/>
<use xlink:href="#DejaVuSans-29" transform="translate(1924.140625 0.015625)"/>
</g>
</g>
</g>
</g>
<defs>
<clipPath id="p7d9497572f">
<rect x="72" y="51.84" width="446.4" height="332.64"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -0,0 +1,822 @@
<?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">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="576pt" height="432pt" viewBox="0 0 576 432" xmlns="http://www.w3.org/2000/svg" version="1.1">
<metadata>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<cc:Work>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:date>2022-12-19T21:15:05.437199</dc:date>
<dc:format>image/svg+xml</dc:format>
<dc:creator>
<cc:Agent>
<dc:title>Matplotlib v3.5.2, https://matplotlib.org/</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
</rdf:RDF>
</metadata>
<defs>
<style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
</defs>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 432
L 576 432
L 576 0
L 0 0
z
" style="fill: #ffffff"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 72 384.48
L 518.4 384.48
L 518.4 51.84
L 72 51.84
z
" style="fill: #ffffff"/>
</g>
<g id="line2d_1">
<path d="M 92.290909 369.36
L 92.290909 66.96
L 224.622925 66.96
L 224.622925 170.91
L 498.109091 170.91
L 498.109091 369.36
L 498.109091 369.36
" clip-path="url(#p9c0cea0fd2)" style="fill: none; stroke: #00008b; stroke-width: 4; stroke-linecap: square"/>
</g>
<g id="mpl_toolkits.axisartist.axis_artist_1">
<defs>
<path id="m15ff62a7ef" d="M 0 0
L 0 -3.5
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#m15ff62a7ef" x="92.290909" y="378.81" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g>
<use xlink:href="#m15ff62a7ef" x="224.622925" y="378.81" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g>
<use xlink:href="#m15ff62a7ef" x="498.109091" y="378.81" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g>
<use xlink:href="#m15ff62a7ef" x="498.109091" y="378.81" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g id="text_1">
<!-- 0 -->
<g transform="translate(87.200909 394.185)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-30" d="M 2034 4250
Q 1547 4250 1301 3770
Q 1056 3291 1056 2328
Q 1056 1369 1301 889
Q 1547 409 2034 409
Q 2525 409 2770 889
Q 3016 1369 3016 2328
Q 3016 3291 2770 3770
Q 2525 4250 2034 4250
z
M 2034 4750
Q 2819 4750 3233 4129
Q 3647 3509 3647 2328
Q 3647 1150 3233 529
Q 2819 -91 2034 -91
Q 1250 -91 836 529
Q 422 1150 422 2328
Q 422 3509 836 4129
Q 1250 4750 2034 4750
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-30"/>
</g>
</g>
<g id="text_2">
<!-- 10 -->
<g transform="translate(214.442925 394.185)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-31" d="M 794 531
L 1825 531
L 1825 4091
L 703 3866
L 703 4441
L 1819 4666
L 2450 4666
L 2450 531
L 3481 531
L 3481 0
L 794 0
L 794 531
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
</g>
</g>
<g id="text_3">
<!-- 100 -->
<g transform="translate(482.839091 394.185)scale(0.16 -0.16)">
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
<g id="text_4">
<!-- 100 -->
<g transform="translate(482.839091 394.185)scale(0.16 -0.16)">
<use xlink:href="#DejaVuSans-31"/>
<use xlink:href="#DejaVuSans-30" x="63.623047"/>
<use xlink:href="#DejaVuSans-30" x="127.246094"/>
</g>
</g>
<g id="patch_3">
<path d="M 72 378.81
L 518.4 378.81
L 533.281966 378.81
" style="fill: none; stroke: #000000; stroke-linecap: round"/>
<path d="M 526.881966 375.61
L 533.281966 378.81
L 526.881966 382.01
L 526.881966 375.61
z
" style="fill: #00a6d6; stroke: #000000; stroke-linecap: round"/>
</g>
<g id="text_5">
<!-- Fatalities -->
<g transform="translate(259.49375 411.57)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-46" d="M 628 4666
L 3309 4666
L 3309 4134
L 1259 4134
L 1259 2759
L 3109 2759
L 3109 2228
L 1259 2228
L 1259 0
L 628 0
L 628 4666
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-61" d="M 2194 1759
Q 1497 1759 1228 1600
Q 959 1441 959 1056
Q 959 750 1161 570
Q 1363 391 1709 391
Q 2188 391 2477 730
Q 2766 1069 2766 1631
L 2766 1759
L 2194 1759
z
M 3341 1997
L 3341 0
L 2766 0
L 2766 531
Q 2569 213 2275 61
Q 1981 -91 1556 -91
Q 1019 -91 701 211
Q 384 513 384 1019
Q 384 1609 779 1909
Q 1175 2209 1959 2209
L 2766 2209
L 2766 2266
Q 2766 2663 2505 2880
Q 2244 3097 1772 3097
Q 1472 3097 1187 3025
Q 903 2953 641 2809
L 641 3341
Q 956 3463 1253 3523
Q 1550 3584 1831 3584
Q 2591 3584 2966 3190
Q 3341 2797 3341 1997
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-74" d="M 1172 4494
L 1172 3500
L 2356 3500
L 2356 3053
L 1172 3053
L 1172 1153
Q 1172 725 1289 603
Q 1406 481 1766 481
L 2356 481
L 2356 0
L 1766 0
Q 1100 0 847 248
Q 594 497 594 1153
L 594 3053
L 172 3053
L 172 3500
L 594 3500
L 594 4494
L 1172 4494
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-6c" d="M 603 4863
L 1178 4863
L 1178 0
L 603 0
L 603 4863
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-69" d="M 603 3500
L 1178 3500
L 1178 0
L 603 0
L 603 3500
z
M 603 4863
L 1178 4863
L 1178 4134
L 603 4134
L 603 4863
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-65" d="M 3597 1894
L 3597 1613
L 953 1613
Q 991 1019 1311 708
Q 1631 397 2203 397
Q 2534 397 2845 478
Q 3156 559 3463 722
L 3463 178
Q 3153 47 2828 -22
Q 2503 -91 2169 -91
Q 1331 -91 842 396
Q 353 884 353 1716
Q 353 2575 817 3079
Q 1281 3584 2069 3584
Q 2775 3584 3186 3129
Q 3597 2675 3597 1894
z
M 3022 2063
Q 3016 2534 2758 2815
Q 2500 3097 2075 3097
Q 1594 3097 1305 2825
Q 1016 2553 972 2059
L 3022 2063
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-73" d="M 2834 3397
L 2834 2853
Q 2591 2978 2328 3040
Q 2066 3103 1784 3103
Q 1356 3103 1142 2972
Q 928 2841 928 2578
Q 928 2378 1081 2264
Q 1234 2150 1697 2047
L 1894 2003
Q 2506 1872 2764 1633
Q 3022 1394 3022 966
Q 3022 478 2636 193
Q 2250 -91 1575 -91
Q 1294 -91 989 -36
Q 684 19 347 128
L 347 722
Q 666 556 975 473
Q 1284 391 1588 391
Q 1994 391 2212 530
Q 2431 669 2431 922
Q 2431 1156 2273 1281
Q 2116 1406 1581 1522
L 1381 1569
Q 847 1681 609 1914
Q 372 2147 372 2553
Q 372 3047 722 3315
Q 1072 3584 1716 3584
Q 2034 3584 2315 3537
Q 2597 3491 2834 3397
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-46"/>
<use xlink:href="#DejaVuSans-61" x="48.394531"/>
<use xlink:href="#DejaVuSans-74" x="109.673828"/>
<use xlink:href="#DejaVuSans-61" x="148.882812"/>
<use xlink:href="#DejaVuSans-6c" x="210.162109"/>
<use xlink:href="#DejaVuSans-69" x="237.945312"/>
<use xlink:href="#DejaVuSans-74" x="265.728516"/>
<use xlink:href="#DejaVuSans-69" x="304.9375"/>
<use xlink:href="#DejaVuSans-65" x="332.720703"/>
<use xlink:href="#DejaVuSans-73" x="394.244141"/>
</g>
</g>
</g>
<g id="mpl_toolkits.axisartist.axis_artist_2">
<defs>
<path id="m000773a3c4" d="M 0 0
L 3.5 0
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#m000773a3c4" x="79.057708" y="369.36" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g>
<use xlink:href="#m000773a3c4" x="79.057708" y="66.96" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g>
<use xlink:href="#m000773a3c4" x="79.057708" y="170.91" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g>
<use xlink:href="#m000773a3c4" x="79.057708" y="369.36" style="fill: none; stroke: #000000; stroke-width: 0.8"/>
</g>
<g id="text_6">
<!-- 0 -->
<g transform="translate(65.377708 373.775)scale(0.16 -0.16)">
<use xlink:href="#DejaVuSans-30"/>
</g>
</g>
<g id="text_7">
<!-- $1.1 * 10^{-2}$ -->
<g transform="translate(-1.722292 71.375)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-2e" d="M 684 794
L 1344 794
L 1344 0
L 684 0
L 684 794
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-2a" d="M 3009 3897
L 1888 3291
L 3009 2681
L 2828 2375
L 1778 3009
L 1778 1831
L 1422 1831
L 1422 3009
L 372 2375
L 191 2681
L 1313 3291
L 191 3897
L 372 4206
L 1422 3572
L 1422 4750
L 1778 4750
L 1778 3572
L 2828 4206
L 3009 3897
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-2212" d="M 678 2272
L 4684 2272
L 4684 1741
L 678 1741
L 678 2272
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-32" d="M 1228 531
L 3431 531
L 3431 0
L 469 0
L 469 531
Q 828 903 1448 1529
Q 2069 2156 2228 2338
Q 2531 2678 2651 2914
Q 2772 3150 2772 3378
Q 2772 3750 2511 3984
Q 2250 4219 1831 4219
Q 1534 4219 1204 4116
Q 875 4013 500 3803
L 500 4441
Q 881 4594 1212 4672
Q 1544 4750 1819 4750
Q 2544 4750 2975 4387
Q 3406 4025 3406 3419
Q 3406 3131 3298 2873
Q 3191 2616 2906 2266
Q 2828 2175 2409 1742
Q 1991 1309 1228 531
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-31" transform="translate(0 0.765625)"/>
<use xlink:href="#DejaVuSans-2e" transform="translate(63.623047 0.765625)"/>
<use xlink:href="#DejaVuSans-31" transform="translate(95.410156 0.765625)"/>
<use xlink:href="#DejaVuSans-2a" transform="translate(178.515625 0.765625)"/>
<use xlink:href="#DejaVuSans-31" transform="translate(247.998047 0.765625)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(311.621094 0.765625)"/>
<use xlink:href="#DejaVuSans-2212" transform="translate(376.201172 39.046875)scale(0.7)"/>
<use xlink:href="#DejaVuSans-32" transform="translate(434.853516 39.046875)scale(0.7)"/>
</g>
</g>
<g id="text_8">
<!-- $10^{-3}$ -->
<g transform="translate(37.957708 175.325)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-33" d="M 2597 2516
Q 3050 2419 3304 2112
Q 3559 1806 3559 1356
Q 3559 666 3084 287
Q 2609 -91 1734 -91
Q 1441 -91 1130 -33
Q 819 25 488 141
L 488 750
Q 750 597 1062 519
Q 1375 441 1716 441
Q 2309 441 2620 675
Q 2931 909 2931 1356
Q 2931 1769 2642 2001
Q 2353 2234 1838 2234
L 1294 2234
L 1294 2753
L 1863 2753
Q 2328 2753 2575 2939
Q 2822 3125 2822 3475
Q 2822 3834 2567 4026
Q 2313 4219 1838 4219
Q 1578 4219 1281 4162
Q 984 4106 628 3988
L 628 4550
Q 988 4650 1302 4700
Q 1616 4750 1894 4750
Q 2613 4750 3031 4423
Q 3450 4097 3450 3541
Q 3450 3153 3228 2886
Q 3006 2619 2597 2516
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-31" transform="translate(0 0.765625)"/>
<use xlink:href="#DejaVuSans-30" transform="translate(63.623047 0.765625)"/>
<use xlink:href="#DejaVuSans-2212" transform="translate(128.203125 39.046875)scale(0.7)"/>
<use xlink:href="#DejaVuSans-33" transform="translate(186.855469 39.046875)scale(0.7)"/>
</g>
</g>
<g id="text_9">
<!-- 0 -->
<g transform="translate(65.377708 373.775)scale(0.16 -0.16)">
<use xlink:href="#DejaVuSans-30"/>
</g>
</g>
<g id="patch_4">
<path d="M 79.057708 384.48
L 79.057708 51.84
L 79.057708 36.958034
" style="fill: none; stroke: #000000; stroke-linecap: round"/>
<path d="M 75.857708 43.358034
L 79.057708 36.958034
L 82.257708 43.358034
L 75.857708 43.358034
z
" style="fill: #00a6d6; stroke: #000000; stroke-linecap: round"/>
</g>
<g id="text_10">
<!-- Probability -->
<g transform="translate(-10.049792 260.44625)rotate(-90)scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-50" d="M 1259 4147
L 1259 2394
L 2053 2394
Q 2494 2394 2734 2622
Q 2975 2850 2975 3272
Q 2975 3691 2734 3919
Q 2494 4147 2053 4147
L 1259 4147
z
M 628 4666
L 2053 4666
Q 2838 4666 3239 4311
Q 3641 3956 3641 3272
Q 3641 2581 3239 2228
Q 2838 1875 2053 1875
L 1259 1875
L 1259 0
L 628 0
L 628 4666
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-72" d="M 2631 2963
Q 2534 3019 2420 3045
Q 2306 3072 2169 3072
Q 1681 3072 1420 2755
Q 1159 2438 1159 1844
L 1159 0
L 581 0
L 581 3500
L 1159 3500
L 1159 2956
Q 1341 3275 1631 3429
Q 1922 3584 2338 3584
Q 2397 3584 2469 3576
Q 2541 3569 2628 3553
L 2631 2963
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-6f" d="M 1959 3097
Q 1497 3097 1228 2736
Q 959 2375 959 1747
Q 959 1119 1226 758
Q 1494 397 1959 397
Q 2419 397 2687 759
Q 2956 1122 2956 1747
Q 2956 2369 2687 2733
Q 2419 3097 1959 3097
z
M 1959 3584
Q 2709 3584 3137 3096
Q 3566 2609 3566 1747
Q 3566 888 3137 398
Q 2709 -91 1959 -91
Q 1206 -91 779 398
Q 353 888 353 1747
Q 353 2609 779 3096
Q 1206 3584 1959 3584
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-62" d="M 3116 1747
Q 3116 2381 2855 2742
Q 2594 3103 2138 3103
Q 1681 3103 1420 2742
Q 1159 2381 1159 1747
Q 1159 1113 1420 752
Q 1681 391 2138 391
Q 2594 391 2855 752
Q 3116 1113 3116 1747
z
M 1159 2969
Q 1341 3281 1617 3432
Q 1894 3584 2278 3584
Q 2916 3584 3314 3078
Q 3713 2572 3713 1747
Q 3713 922 3314 415
Q 2916 -91 2278 -91
Q 1894 -91 1617 61
Q 1341 213 1159 525
L 1159 0
L 581 0
L 581 4863
L 1159 4863
L 1159 2969
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-79" d="M 2059 -325
Q 1816 -950 1584 -1140
Q 1353 -1331 966 -1331
L 506 -1331
L 506 -850
L 844 -850
Q 1081 -850 1212 -737
Q 1344 -625 1503 -206
L 1606 56
L 191 3500
L 800 3500
L 1894 763
L 2988 3500
L 3597 3500
L 2059 -325
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-50"/>
<use xlink:href="#DejaVuSans-72" x="58.552734"/>
<use xlink:href="#DejaVuSans-6f" x="97.416016"/>
<use xlink:href="#DejaVuSans-62" x="158.597656"/>
<use xlink:href="#DejaVuSans-61" x="222.074219"/>
<use xlink:href="#DejaVuSans-62" x="283.353516"/>
<use xlink:href="#DejaVuSans-69" x="346.830078"/>
<use xlink:href="#DejaVuSans-6c" x="374.613281"/>
<use xlink:href="#DejaVuSans-69" x="402.396484"/>
<use xlink:href="#DejaVuSans-74" x="430.179688"/>
<use xlink:href="#DejaVuSans-79" x="469.388672"/>
</g>
</g>
</g>
<g id="text_11">
<!-- FN curve, $1-F_{N}(n) = P(N &gt; n)$ -->
<g transform="translate(265.584 45.84)scale(0.192 -0.192)">
<defs>
<path id="DejaVuSans-4e" d="M 628 4666
L 1478 4666
L 3547 763
L 3547 4666
L 4159 4666
L 4159 0
L 3309 0
L 1241 3903
L 1241 0
L 628 0
L 628 4666
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-20" transform="scale(0.015625)"/>
<path id="DejaVuSans-63" d="M 3122 3366
L 3122 2828
Q 2878 2963 2633 3030
Q 2388 3097 2138 3097
Q 1578 3097 1268 2742
Q 959 2388 959 1747
Q 959 1106 1268 751
Q 1578 397 2138 397
Q 2388 397 2633 464
Q 2878 531 3122 666
L 3122 134
Q 2881 22 2623 -34
Q 2366 -91 2075 -91
Q 1284 -91 818 406
Q 353 903 353 1747
Q 353 2603 823 3093
Q 1294 3584 2113 3584
Q 2378 3584 2631 3529
Q 2884 3475 3122 3366
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-75" d="M 544 1381
L 544 3500
L 1119 3500
L 1119 1403
Q 1119 906 1312 657
Q 1506 409 1894 409
Q 2359 409 2629 706
Q 2900 1003 2900 1516
L 2900 3500
L 3475 3500
L 3475 0
L 2900 0
L 2900 538
Q 2691 219 2414 64
Q 2138 -91 1772 -91
Q 1169 -91 856 284
Q 544 659 544 1381
z
M 1991 3584
L 1991 3584
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-76" d="M 191 3500
L 800 3500
L 1894 563
L 2988 3500
L 3597 3500
L 2284 0
L 1503 0
L 191 3500
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-2c" d="M 750 794
L 1409 794
L 1409 256
L 897 -744
L 494 -744
L 750 256
L 750 794
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-Oblique-46" d="M 1081 4666
L 3756 4666
L 3653 4134
L 1606 4134
L 1338 2759
L 3188 2759
L 3084 2228
L 1234 2228
L 800 0
L 172 0
L 1081 4666
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-Oblique-4e" d="M 1081 4666
L 1931 4666
L 3219 666
L 4000 4666
L 4616 4666
L 3706 0
L 2853 0
L 1569 4025
L 788 0
L 172 0
L 1081 4666
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-28" d="M 1984 4856
Q 1566 4138 1362 3434
Q 1159 2731 1159 2009
Q 1159 1288 1364 580
Q 1569 -128 1984 -844
L 1484 -844
Q 1016 -109 783 600
Q 550 1309 550 2009
Q 550 2706 781 3412
Q 1013 4119 1484 4856
L 1984 4856
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-Oblique-6e" d="M 3566 2113
L 3156 0
L 2578 0
L 2988 2091
Q 3016 2238 3031 2350
Q 3047 2463 3047 2528
Q 3047 2791 2881 2937
Q 2716 3084 2419 3084
Q 1956 3084 1622 2776
Q 1288 2469 1184 1941
L 800 0
L 225 0
L 903 3500
L 1478 3500
L 1363 2950
Q 1603 3253 1940 3418
Q 2278 3584 2650 3584
Q 3113 3584 3367 3334
Q 3622 3084 3622 2631
Q 3622 2519 3608 2391
Q 3594 2263 3566 2113
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-29" d="M 513 4856
L 1013 4856
Q 1481 4119 1714 3412
Q 1947 2706 1947 2009
Q 1947 1309 1714 600
Q 1481 -109 1013 -844
L 513 -844
Q 928 -128 1133 580
Q 1338 1288 1338 2009
Q 1338 2731 1133 3434
Q 928 4138 513 4856
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-3d" d="M 678 2906
L 4684 2906
L 4684 2381
L 678 2381
L 678 2906
z
M 678 1631
L 4684 1631
L 4684 1100
L 678 1100
L 678 1631
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-Oblique-50" d="M 1081 4666
L 2541 4666
Q 3178 4666 3512 4369
Q 3847 4072 3847 3500
Q 3847 2731 3353 2303
Q 2859 1875 1966 1875
L 1172 1875
L 806 0
L 172 0
L 1081 4666
z
M 1613 4147
L 1275 2394
L 2069 2394
Q 2606 2394 2893 2669
Q 3181 2944 3181 3456
Q 3181 3784 2986 3965
Q 2791 4147 2438 4147
L 1613 4147
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-3e" d="M 678 3150
L 678 3719
L 4684 2266
L 4684 1747
L 678 294
L 678 863
L 3897 2003
L 678 3150
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-46" transform="translate(0 0.125)"/>
<use xlink:href="#DejaVuSans-4e" transform="translate(57.519531 0.125)"/>
<use xlink:href="#DejaVuSans-20" transform="translate(132.324219 0.125)"/>
<use xlink:href="#DejaVuSans-63" transform="translate(164.111328 0.125)"/>
<use xlink:href="#DejaVuSans-75" transform="translate(219.091797 0.125)"/>
<use xlink:href="#DejaVuSans-72" transform="translate(282.470703 0.125)"/>
<use xlink:href="#DejaVuSans-76" transform="translate(323.583984 0.125)"/>
<use xlink:href="#DejaVuSans-65" transform="translate(382.763672 0.125)"/>
<use xlink:href="#DejaVuSans-2c" transform="translate(444.287109 0.125)"/>
<use xlink:href="#DejaVuSans-20" transform="translate(476.074219 0.125)"/>
<use xlink:href="#DejaVuSans-31" transform="translate(507.861328 0.125)"/>
<use xlink:href="#DejaVuSans-2212" transform="translate(590.966797 0.125)"/>
<use xlink:href="#DejaVuSans-Oblique-46" transform="translate(694.238281 0.125)"/>
<use xlink:href="#DejaVuSans-Oblique-4e" transform="translate(751.757812 -16.28125)scale(0.7)"/>
<use xlink:href="#DejaVuSans-28" transform="translate(806.855469 0.125)"/>
<use xlink:href="#DejaVuSans-Oblique-6e" transform="translate(845.869141 0.125)"/>
<use xlink:href="#DejaVuSans-29" transform="translate(909.248047 0.125)"/>
<use xlink:href="#DejaVuSans-3d" transform="translate(967.744141 0.125)"/>
<use xlink:href="#DejaVuSans-Oblique-50" transform="translate(1071.015625 0.125)"/>
<use xlink:href="#DejaVuSans-28" transform="translate(1131.318359 0.125)"/>
<use xlink:href="#DejaVuSans-Oblique-4e" transform="translate(1170.332031 0.125)"/>
<use xlink:href="#DejaVuSans-3e" transform="translate(1264.619141 0.125)"/>
<use xlink:href="#DejaVuSans-Oblique-6e" transform="translate(1367.890625 0.125)"/>
<use xlink:href="#DejaVuSans-29" transform="translate(1431.269531 0.125)"/>
</g>
</g>
</g>
</g>
<defs>
<clipPath id="p9c0cea0fd2">
<rect x="72" y="51.84" width="446.4" height="332.64"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 27 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

1054
book/features/pd/temp.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 74 KiB

View file

@ -1,4 +0,0 @@
(remove_from_publish)=
# Remove From Publish
Describe me.

192
book/features/widgets.ipynb Normal file
View file

@ -0,0 +1,192 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Widgets\n",
"\n",
"If you publish widgets in a jupyter book they might (depending on your implementation) require an active python kernel for the output to be interactive. Using the [thebe-integration](live_code.md), this is possible. Note: You can circumvent the use of a kernel by using packages which don't need such a kernel, for example the [non-kernel-based widgets using Plotly](interactive_element)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Please note:\n",
"- You might want to hide the output before the thebe has been activated.\n",
"- You can hide the code by adding a custom-made tag: `thebe-remove-input-init`.\n",
"- You can automatically start the thebe functionality when you add `auto-execute-page` to a cell. \n",
"\n",
"## Example\n",
"The code below shows an example of the strain energy in a structure and work done by a force for different trial functions. Because of the actual python code, the plot 'refreshes' upon updating a widgets. This can be avoided by updating the current figure instead of plotting a new figure. Remember, first press {fa}`rocket` --> {guilabel}`Live Code` and then wait until all cells are executed:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init",
"auto-execute-page"
]
},
"outputs": [],
"source": [
"import sympy as sp\n",
"F = 10\n",
"EI = 20e3\n",
"L = 3\n",
"\n",
"# Polynomial trial function\n",
"x, C1, C2, C3, C4, F, u0= sp.symbols('x, C1, C2, C3, C4, F, u0')\n",
"w = C1*x**3+C2*x**2+C3*x + C4\n",
"eq1 = sp.Eq(w.subs(x,0),0)\n",
"eq2 = sp.Eq(w.diff(x).subs(x,0),0)\n",
"eq3 = sp.Eq((-w.diff(x,2)*EI).subs(x,L),0)\n",
"eq4 = sp.Eq(w.subs(x,L),u0)\n",
"sol = sp.solve((eq1, eq2,eq3,eq4),(C1,C2,C3,C4))\n",
"w_sol = sp.nsimplify(w.subs(sol))\n",
"w_numpy_polynomial = sp.lambdify((u0,x),w_sol)\n",
"\n",
"M_sol_polynomial = sp.nsimplify(EI * w_sol.diff(x,2))\n",
"\n",
"Ev_polynomial = sp.integrate(sp.nsimplify(M_sol_polynomial**2/(EI*2)),(x,0,3))\n",
"\n",
"Ev_numpy_polynomial = sp.lambdify(u0,Ev_polynomial)\n",
"\n",
"V_polynomial = Ev_polynomial - 10 * u0\n",
"V_numpy_polynomial = sp.lambdify(u0,V_polynomial)\n",
"\n",
"#cosine trial function\n",
"w_sol = u0*sp.sin(x/12*2*sp.pi-sp.pi/2)+u0\n",
"w_numpy_sin = sp.lambdify((u0,x),w_sol)\n",
"\n",
"M_sol_sin = sp.nsimplify(EI * w_sol.diff(x,2))\n",
"\n",
"Ev_sin = sp.integrate(sp.nsimplify(M_sol_sin**2/(EI*2)),(x,0,3))\n",
"\n",
"Ev_numpy_sin = sp.lambdify(u0,Ev_sin)\n",
"\n",
"V_sin = Ev_sin - 10 * u0\n",
"V_numpy_sin = sp.lambdify(u0,V_sin)\n",
"\n",
"#sin trial function\n",
"w_sol = 2*u0*(sp.cosh(x/sp.pi))-2*u0\n",
"w_numpy_cosh = sp.lambdify((u0,x),w_sol)\n",
"\n",
"M_sol_cosh = sp.nsimplify(EI * w_sol.diff(x,2))\n",
"\n",
"Ev_cosh = sp.integrate(sp.nsimplify(M_sol_cosh**2/(EI*2)),(x,0,3))\n",
"\n",
"Ev_numpy_cosh = sp.lambdify(u0,Ev_cosh)\n",
"\n",
"V_cosh = Ev_cosh - 10 * u0\n",
"V_numpy_cosh = sp.lambdify(u0,V_cosh)\n",
"\n",
"import matplotlib.pylab as plt\n",
"import numpy as np\n",
"from ipywidgets import widgets, interact\n",
"\n",
"def func(u,trial_function):\n",
" fig, axs = plt.subplots(2, 2, figsize=(10, 6))\n",
"\n",
" x = np.linspace(0,3,100)\n",
" if trial_function == 'Polynomial':\n",
" w_numpy = w_numpy_polynomial\n",
" Ev_numpy = Ev_numpy_polynomial\n",
" V_numpy = V_numpy_polynomial\n",
" elif trial_function == 'cos':\n",
" w_numpy = w_numpy_sin\n",
" Ev_numpy = Ev_numpy_sin\n",
" V_numpy = V_numpy_sin\n",
" elif trial_function == 'cosh':\n",
" w_numpy = w_numpy_cosh\n",
" Ev_numpy = Ev_numpy_cosh\n",
" V_numpy = V_numpy_cosh\n",
" axs[0,0].plot(x,w_numpy(u,x))\n",
" axs[0,0].set_xlim([-0.2,3.2])\n",
" axs[0,0].set_ylim([-0.003,0.01])\n",
" axs[0,0].invert_yaxis()\n",
" axs[0,0].annotate(text='', xy=(3,w_numpy(u,3)), xytext=(3,0), arrowprops=dict(arrowstyle='fancy'))\n",
" axs[0,0].text(3.1,w_numpy(u,3),'$u_0$')\n",
" axs[0,0].axis('off')\n",
" axs[0,1].axis('off')\n",
" axs[0,1].set_xlim([-0.2,3.2])\n",
" axs[0,1].set_ylim([-0.003,0.01])\n",
" axs[0,1].annotate(text='', xy=(1.5,w_numpy(u,3)), xytext=(1.5,w_numpy(u,3)-0.003), arrowprops=dict(arrowstyle='simple'))\n",
" axs[0,1].invert_yaxis()\n",
" x_axis= ['$E_v$','$A_F$','$E_v - A_F$']\n",
" y_axis = [Ev_numpy(u),w_numpy(u,3)*10,Ev_numpy(u)-w_numpy(u,3)*10]\n",
" axs[1,0].bar(x_axis,y_axis,color=('blue','green','orange'))\n",
" axs[1,0].set_ylim([-0.03,0.1])\n",
" axs[1,0].set_yticklabels([])\n",
" axs[1,0].set_yticks([])\n",
" \n",
" u_range=np.linspace(-0.0015,0.01,100)\n",
" axs[1,1].plot(u_range,Ev_numpy(u_range),label='$E_v$',color='blue')\n",
" axs[1,1].plot(u_range,w_numpy(u_range,3)*10,label='$F_A$',color='green')\n",
" axs[1,1].plot(u_range,V_numpy(u_range),label='$E_v - A_F$',color='orange')\n",
" axs[1,1].legend()\n",
" axs[1,1].plot(u,Ev_numpy(u),'o',color='blue')\n",
" axs[1,1].plot(u,w_numpy(u,3)*10,'o',color='green')\n",
" axs[1,1].plot(u,Ev_numpy(u)-w_numpy(u,3)*10,'o',color='orange')\n",
" axs[1,1].set_ylim([-0.03,0.1])\n",
" axs[1,1].set_xlim([-0.0015,0.01])\n",
" axs[1,1].set_xlabel('$u_0$')\n",
" axs[1,1].set_xticks([])\n",
" axs[1,1].set_xticklabels([])\n",
" axs[1,1].set_yticks([])\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The graph will appear below in interactive mode:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"thebe-remove-input-init"
]
},
"outputs": [],
"source": [
"interact(func, u = widgets.FloatSlider(min=-0.001, max=0.01, value=0, step=0.0002, description=\"Displacement u_0\",readout_format='.4f',style= {'description_width': '180px'},layout = {'width': '400px'}),\n",
" trial_function = widgets.ToggleButtons(options=['Polynomial', 'cos', 'cosh']));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
}
],
"metadata": {
"celltoolbar": "Tags",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

BIN
book/images/image-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
book/images/image-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
book/images/image-3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
book/images/image-4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
book/images/image-5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
book/images/image-6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
book/images/image-7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

BIN
book/images/image-8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
book/images/image-9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
book/images/image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

34
book/workflows/github.md Normal file
View file

@ -0,0 +1,34 @@
# GitHub template
To get started making your Jupyter Book with our functionalities, fork our template book https://github.com/TeachBooks/template :
![alt text](../images/image.png)
Fill in a repository name, this name will be used in the future url of your book:
![alt text](../images/image-1.png)
Set up the build of your website using GitHub pages by selecting under `Settings` - `Pages` - `Build and deployment` - `Source` - `GitHub Actions`:
![alt text](../images/image-2.png)
Enable the predefined workflow to publish your book under `Actions` - `I understand my workflows, go ahead an enable them`:
![alt text](../images/image-3.png)
Edit a file under `Code` - `book` - A file of your choice - `Edit in place`, in the example below `book/intro.md` is edited:
![alt text](../images/image-5.png)
Make your edit and `Commit changes` to `main` branch:
![alt text](../images/image-6.png)
![alt text](../images/image-7.png)
Wait a few minutes for the website to be deployed, if you're curious, have a look at the progress under `Actions` - `All wokflows`:
![alt text](../images/image-8.png)
When the workflow has finished, visit your build book at https://<username>.github.io/<repository_name> (case sensitive). For our example it is: https://dummystudent-Tom.github.io/My_own_book:
![alt text](../images/image-9.png)

View file

@ -2,4 +2,6 @@
```{warning} Under Construction!
This page will provide a workflow how to collaborate in Git and GitLab for different uses types. Every team might have a different workflow but this workflow is shown as an example and is used in the MUDE course in CEG.
This page will provide a workflow how to collaborate in Git and GitLab for different uses types. Every team might have a different workflow but this workflow is shown as an example and is used in the MUDE course in CEG.
An alternative is to use Github and Github pages to publish your book.

View file

@ -1,4 +1,10 @@
jupyter-book
sphinx-inline-tabs
jupyterlite-xeus-python
jupyterlite-sphinx
jupyterlite-sphinx
--extra-index-url https://gitlab.tudelft.nl/api/v4/projects/11239/packages/pypi/simple
sphinx-thebe == 0.2.1000
--extra-index-url https://gitlab.tudelft.nl/api/v4/projects/17983/packages/pypi/simple
jupyterbook_patches == 0.1.2
download_link_replacer @ git+https://gitlab.tudelft.nl/mude/sphinx-download-link-replacer@dlr-0.1.2