{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Jupyter Support" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This page is built by the Sphinx's `nbsphinx` extension. The raw file is a Python-kernel Jupyter Notebook file `JupyterSupport.ipynb` under the `subpage` folder of the Simrofy project.\n", "\n", "For more details about Jupyter Notebook & Jupyter Lab, you can visit [Jupyter's official website](https://jupyter.org/)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Jupyter Notebook is famous for its plotting & data visualization along its Markdown-syntax typesetting. Let us have a quick look on these features." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are some configurations for plotting, which are mentioned by `nbsphinx`. \n", "\n", "1. **Figure format**: Since Sphinx will builds all Jupyter notebook into HTML, we probably prefer SVG over PNG figures. \n", "2. **Figure dpi**: May increase the dpi (default is 72) for high resolution screen, especially when the format is PNG. \n", "2. **Random SVG**: Note that the figure output would be stored for the website, so we also need to avoid randomness in SVG generating -- both its content and its filename. Jupyter notebook has a `svg.hashsalt` option to control the \"random seed\"." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can create a `matplotrc` file in the same folder with our Jupyter notebook file, and write:\n", "\n", "```\n", "figure.dpi: 96\n", "figure.figsize: 8, 6\n", "font.size: 14.0\n", "svg.hashsalt: mplsalt\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The figure format is an option of IPython, so we can't configure it through matplotlib. We need to run it inside our Jupyter notebook:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# The PDF figure format is used when the noteboook is converted by LaTeX\n", "%config InlineBackend.figure_formats = {'svg', 'pdf'}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we are pleased to draw a simple plot after finishing all these configurations." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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VHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTIgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM0MiA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDIzIDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxMiA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjEyIDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDUKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk4MiA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMTUgMCBvYmoKPDwgL2ZpdmUgMTYgMCBSIC9mb3VyIDE3IDAgUiAvb25lIDE5IDAgUiAvcGVyaW9kIDIwIDAgUiAvc2V2ZW4gMjEgMCBSCi9zaXggMjIgMCBSIC90aHJlZSAyMyAwIFIgL3R3byAyNCAwIFIgL3plcm8gMjUgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0RlamFWdVNhbnMtbWludXMgMTggMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTAgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iagoyNiAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMjEwNjIwMTAyMDQ1LTA3JzAwJykKL0NyZWF0b3IgKG1hdHBsb3RsaWIgMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChtYXRwbG90bGliIHBkZiBiYWNrZW5kIDMuMi4yKSA+PgplbmRvYmoKeHJlZgowIDI3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDA2ODU0IDAwMDAwIG4gCjAwMDAwMDY2MzUgMDAwMDAgbiAKMDAwMDAwNjY2NyAwMDAwMCBuIAowMDAwMDA2NzY2IDAwMDAwIG4gCjAwMDAwMDY3ODcgMDAwMDAgbiAKMDAwMDAwNjgwOCAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDAzOTkgMDAwMDAgbiAKMDAwMDAwMDIwOCAwMDAwMCBuIAowMDAwMDAyMzk3IDAwMDAwIG4gCjAwMDAwMDU0NDIgMDAwMDAgbiAKMDAwMDAwNTI0MiAwMDAwMCBuIAowMDAwMDA0ODg4IDAwMDAwIG4gCjAwMDAwMDY0OTUgMDAwMDAgbiAKMDAwMDAwMjQxOCAwMDAwMCBuIAowMDAwMDAyNzM4IDAwMDAwIG4gCjAwMDAwMDI5MDAgMDAwMDAgbiAKMDAwMDAwMzA3MCAwMDAwMCBuIAowMDAwMDAzMjIyIDAwMDAwIG4gCjAwMDAwMDMzNDMgMDAwMDAgbiAKMDAwMDAwMzQ4MyAwMDAwMCBuIAowMDAwMDAzODczIDAwMDAwIG4gCjAwMDAwMDQyODQgMDAwMDAgbiAKMDAwMDAwNDYwNSAwMDAwMCBuIAowMDAwMDA2OTE0IDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gMjYgMCBSIC9Sb290IDEgMCBSIC9TaXplIDI3ID4+CnN0YXJ0eHJlZgo3MDY4CiUlRU9GCg==\n", "image/svg+xml": [ "\r\n", "\r\n", "\r\n", "\r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", " \r\n", "\r\n" ], "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = np.linspace(0, 2*np.pi, 100)\n", "y = np.sin(x)\n", "\n", "# Overwrite the rcParam figsize\n", "fig, ax = plt.subplots(figsize=(8, 5))\n", "ax.plot(x, y, 'b-')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data frame visualization" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(100, 2)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Generate an array data and show its number of rows and columns\n", "mat = np.array([x, y]).T\n", "mat.shape" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xsin(x)
00.0000000.000000
10.0634670.063424
20.1269330.126592
30.1904000.189251
40.2538660.251148
\n", "
" ], "text/plain": [ " x sin(x)\n", "0 0.000000 0.000000\n", "1 0.063467 0.063424\n", "2 0.126933 0.126592\n", "3 0.190400 0.189251\n", "4 0.253866 0.251148" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(mat, columns=('x', 'sin(x)'))\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can control its display format by:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "pd.options.display.float_format = '{:.4f}'.format" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xsin(x)
00.00000.0000
10.06350.0634
20.12690.1266
30.19040.1893
40.25390.2511
\n", "
" ], "text/plain": [ " x sin(x)\n", "0 0.0000 0.0000\n", "1 0.0635 0.0634\n", "2 0.1269 0.1266\n", "3 0.1904 0.1893\n", "4 0.2539 0.2511" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Markdown syntax" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All paragraphs in this Jupyter Notebook are written in Markdown syntax. For example, you can make:\n", "\n", "- Italic *italic*,\n", "- Bold **bold**, and\n", "- Literal `literal` font styles." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Also, it's worthnoting that `nbsphinx` provides support for some admonitions.\n", "\n", "
\n", " \n", "Warning\n", "\n", "This is an *experimental feature*!\n", " \n", "Its usage will probably change in the future or it might be removed completely!\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Please **strictly follow this format** (including blank lines around div labels and the title \"Warning\") when you use this admonition feature.\n", "\n", "```html\n", "
\n", " \n", "Warning\n", "\n", "This is an *experimental feature*!\n", "Its usage will probably change in the future or it might be removed completely!\n", "\n", "
\n", "```\n", "\n", "Up to current `nbsphinx` version (see below), it only supports \"warning\" and \"info\" (i.e. alert-info) admonitions." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.7.1\n" ] } ], "source": [ "import nbsphinx\n", "print(nbsphinx.__version__)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## LaTeX equations and cross-references" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The LaTeX equation is natively supported by Jupyter. When the Sphinx builds the Jupyter file into a HTML webpage, it uses the MathJax to render equations. For more details of equation usage in `nbsphinx`, you can visit [nbsphinx: Equations](https://nbsphinx.readthedocs.io/en/0.8.6/markdown-cells.html#Equations).\n", "\n", "Please remember to **avoid indentation inside the equation**, otherwise the HTML builds may fail. \n", "\n", "Here is an example equation:\n", "\n", "\\begin{equation}\n", "\\int_0^\\pi \\sin^2 x \\,dx = \\frac{\\pi}{2}\n", "\\label{eq:example}\n", "\\end{equation}\n", "\n", "The text behind it is:\n", "\n", "```\n", "\\begin{equation}\n", "\\int_0^\\pi \\sin^2 x \\,dx = \\frac{\\pi}{2}\n", "\\label{eq:example}\n", "\\end{equation}\n", "```\n", "\n", "You can also use the asterisk-variant environment to produce equations without auto-numbering on the right." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Auto-numbering\n", "\n", "You can enable auto-numbering for the HTML output by adding following options to your `conf.py`:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```python\n", "# For Sphinx >= 4.0\n", "mathjax3_config = {\n", " 'tex': {'tags': 'ams', 'useLabelIds': True},\n", "}\n", "\n", "# For older Sphinx\n", "mathjax_config = {\n", " 'TeX': {'equationNumbers': {'autoNumber': 'AMS', 'useLabelIds': True}},\n", "}\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cross-reference" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can refer the equation if you have given it a `\\label{...}` field.\n", "\n", "For the equation above, we can refer it by `\\eqref{eq:example}` (which gives \\eqref{eq:example}, a number in brackets) or `\\ref{eq:example}` (\\ref{eq:example}, a number without brackets)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.8.3" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }