{
"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": "JVBERi0xLjQKJazcIKu6CjEgMCBvYmoKPDwgL1BhZ2VzIDIgMCBSIC9UeXBlIC9DYXRhbG9nID4+CmVuZG9iago4IDAgb2JqCjw8IC9FeHRHU3RhdGUgNCAwIFIgL0ZvbnQgMyAwIFIgL1BhdHRlcm4gNSAwIFIKL1Byb2NTZXQgWyAvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJIF0gL1NoYWRpbmcgNiAwIFIKL1hPYmplY3QgNyAwIFIgPj4KZW5kb2JqCjEwIDAgb2JqCjw8IC9Bbm5vdHMgWyBdIC9Db250ZW50cyA5IDAgUgovR3JvdXAgPDwgL0NTIC9EZXZpY2VSR0IgL1MgL1RyYW5zcGFyZW5jeSAvVHlwZSAvR3JvdXAgPj4KL01lZGlhQm94IFsgMCAwIDQ5OC40NDA2MjUgMzAyLjg3MTg3NSBdIC9QYXJlbnQgMiAwIFIgL1Jlc291cmNlcyA4IDAgUgovVHlwZSAvUGFnZSA+PgplbmRvYmoKOSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDExIDAgUiA+PgpzdHJlYW0KeJytmM2OXMcNhff9FLWMFy4VWVWs4jKCHQHZyR4kiyALQ5YVC5YCRXD8+vnIHmn6tufHAaSBNDNHt4ss8pxDdkt5e3r2ZylvPpZW3vL3t/KP8k++/1ikvCjPvnn9359fvf7uxfPy6uOpgb87Dd91jGY6+fWXy19707qX7DXB2/HXf51O70/E4TUvOPrN6TRG3efXaf/0XJwuVa/hXw6wz2qf8btDLmGi/cS99HyvNwTkbnVf3C7S4H9ONqt0mX0csrhAW+2fTj095wa/nZ7flGd/kSKt3Px0Mqk+ZQ+b3rx41bWFbG5+PP2pfVVu3pZvb04Z+STqdYnPdgx1CT8RS9Tq7L7FVPs+BpOrYD5qb2usfgx2AT8VjIqLrrXnnnYVTI/BdO66fY5xDHYJPxFM56QIc805tq9jsH4M1gkxdh9yDHYJPxGsxwOtL52iasdg4yrY3rUt6VuPwS7gp4JtGOpiPrjcVbB5DDamVmjU5zHYJfxEsDG8juVmgwznMZhdBfssnG5VpW16TCyp/Rr9HOoD/7bydUNNq2rpWqm2u87Rpbx6d0xlk+n2W5dIgtaWgjiRwgeSaHEYX59+4ADc5u0Pf/v1+x/ef/z63c/vf/1Yvvn36SVf1ynbqtJExA8p36EPpWydxg8d+BUKeDLlVtf8Uin7qu5C9w4p36EPpYxgEe1w0yX2R1KeX6zKoug3zKYfcr6AH0oaztW2xxpb+tx/JGv9YoWWiZ9+1s5d1nfwA343K/7Dc7P6ujXwW8repxrxVs0UhzyGuYMfD7OtbptY0LahhyLcF01V6pza15HxF/Cj0VQWVJ4zTG+PA1HujYbjjKHWj2S9gB+PNna1EWY+nTpcKuneaBtVdt2Y6SHaHfx4tOUMRWtMtWl+sJqI9qHct2eMYZV5u4Rc/vO6/L28L1r+WqgmK0IwTsp319vPxVJw4Jhhs8zUtovgQNb29DDNRfrqCKXImuGUyyzgVYd6m0GBXmGbj2jeJrRu1Z0M2q37CnltdhpdoyEp1qyuC/cKmPBqefvGEz62BezcT+fiQAjIVdeyoGGYjA5HrypOLYwxCSysZ42dyg0esVgsvNwTNwY/sahXr61DnkhcBIKqnoe8Y0oUPWE2ChUTHh+ovu/Ve+Kshdpgpk64Bpy5MHHrFHej+jMWtt4lkyEDk7DCotZ4peTTHeJQJxHQUZeN3Wbi9FSwFwpgkG1PGZL4rsxaw3N0aeUn18QHF5G5OyOUZogb8RJnZMhsLWiERIy+RO9ksm1yZGS/omTOCE981i49RzEdG3OyBCTO3MX0OJQmUkoezPwZOFMY/p50FlfPx4MnDNfYwoLlclsy6LiktXE+BdenRIlPGOGqCbc1z3ciMW+7O5XcUaZu5xxZOBDDpNxM/zAZCpj4ZjzaolC6Yo9cGHngrhUWuYQeel0dZ85z3BiWs+2oJR2h3rkMaOMXaGjRE0MGG0YlPrCUPnr0RMMA2piJ06BGUzmHhbD5yuODofy0YoWaIQRijcQxxtacXUnpzu4dQQXO7uOtsS2D01q2Us3ndTBCnX0OWkLcCUc1cScWMyjYTQv77hZlCE6LLwvz7Lyl0PPw5VtVt50i4eJUtuWtwpB8OkupNqdVdPmMo2kW/4A1RKJZTGRWUXQfeASTG8a11Fpc0VjhZKfzk6+lG6DWulyjc9FPdcQZxKG6sTXSvBKsIA4VSXzGwoDKSnALeicXokHNGzXN+YUczrVcLA/bOwUUPJkmWBIqeIGx4j3gqHowi7M20AuhLmQibHfMC4Z44rjlNp5islNua7GLgGNVc0dnhQED0ee59NwcSXLnkqbRCZDHYGFrw+qFg0fLeTDwfJ9Ie0oyTs7TrONCvlHlKOF2LRwkYMHcN7VdJZTjHLITRtWb5rB/LO4wNfXd8TvEQZxy1hYFCJjOE4VaF8tem+fTijevnMeUnxGxMrtO/WG5zDKhpu+VFoQJ4F6GMRTGIs7k7fx0TAZjOypQoWFpOb+QBX48O5ccIeax0/U7DHfmFu8cw6FILwuIvyDzjk8X2mO8BUvv7MQXBjgExOegFqoNGL/E7RAAHOZO2fqOXYbCSQpVwN+R/OFMrsgasHLBV8txwlZQmZ1zSqAdzZ9RLBk6ah7hi+ERJOlhNuTEkCML7IHTEsaSbcGMQgksSJfJ4Tq8H0EuBSUtrNzzbEZVsznQA+OZMliKmamHaQ/WhkJlSGBrHDIadmw9RMss2UG5M4wbG5ZKC0YYkafhMNEogwrOjC0zcLJfDGDuiOVZvAugiSPHFx7PJcNyGeNYr6dXMn5YWNyw5RWuNluOI/w4ou8G+XgnxtvNTAN78bmoBzIJESRt8IDaYhCMgsG6sVNKwrjwtJiuHmVC+ZkGlqaxoMVyE2Wft4mM6AdMRMFcYI/Nn8Cpw0ASA+lpzCqL/SNw0sVKVXNNZ6SzBCSOCTM3IIFEi/fa6cLUiYvG6MAJMAt1T8UPdLG59whDkRrONaNvcIe55CH/40L9/ell+ZA7VPvdRy3HNeqBj33u/xyHc+/9QOjdgx8IxSv+nw+Wjs/fnfRohJen/wEBrOGaCmVuZHN0cmVhbQplbmRvYmoKMTEgMCBvYmoKMTkyMwplbmRvYmoKMTYgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAyNDcgPj4Kc3RyZWFtCnicTVG7bUQxDOvfFFzgAOtreZ4LUl32b0PJCJDCIKEvKaclFvbGSwzhB1sPvuSRVUN/Hj8x7DMsPcnk1D/muclUFL4VqpuYUBdi4f1oBLwWdC8iK8oH349lDHPO9+CjEJdgJjRgrG9JJhfVvDNkwomhjsNBm1QYd00ULK4VzTPI7VY3sjqzIGx4JRPixgBEBNkXkM1go4yxlZDFch6oCpIFWmDX6RtRi4IrlNYJdKLWxLrM4Kvn9nY3Qy/y4Ki6eH0M60uwwuileyx8rkIfzPRMO3dJI73wphMRZg8FUpmdkZU6PWJ9t0D/n2Ur+PvJz/P9CxUoXCoKZW5kc3RyZWFtCmVuZG9iagoxNyAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDkwID4+CnN0cmVhbQp4nE2NQRLAIAgD77wiT1BE0P90etL/X6vUDr3ATgKJFkWC9DVqSzDuuDIVa1ApmJSXwFUwXAva7qLK/jJJTJ2G03u3A4Oy8XGD0kn79nF6AKv9egbdD9IcIlgKZW5kc3RyZWFtCmVuZG9iagoxOCAwIG9iago8PCAvQkJveCBbIC0xMDIxIC00NjMgMTc5NCAxMjMzIF0gL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAzNwovU3VidHlwZSAvRm9ybSAvVHlwZSAvWE9iamVjdCA+PgpzdHJlYW0KeJzjMjQwUzA2NVXI5TI3NgKzcsAsI3MjIAski2BBZNMAAV8KCgplbmRzdHJlYW0KZW5kb2JqCjE5IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggODAgPj4Kc3RyZWFtCnicRYy7DcAwCER7pmAEfiZmnyiVs38bIErccE+6e7g6EjJT3mGGhwSeDCyGU/EGmaNgNbhGUo2d7KOwbl91geZ6U6v19wcqT3Z2cT3Nyxn0CmVuZHN0cmVhbQplbmRvYmoKMjAgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA0OSA+PgpzdHJlYW0KeJwzNrRQMFAwNDAHkkaGQJaRiUKKIRdIAMTM5YIJ5oBZBkAaojgHriaHKw0AxugNJgplbmRzdHJlYW0KZW5kb2JqCjIxIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggNjggPj4Kc3RyZWFtCnicMzM2UzBQsDACEqamhgrmRpYKKYZcQD6IlcsFE8sBs8wszIEsIwuQlhwuQwtjMG1ibKRgZmIGZFkgMSC60gBy+BKRCmVuZHN0cmVhbQplbmRvYmoKMjIgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAzMTcgPj4Kc3RyZWFtCnicNVJLckMxCNu/U3CBzpi/fZ50smruv62EJyuwLUBCLi9Z0kt+1CXbpcPkVx/3JbFCPo/tmsxSxfcWsxTPLa9HzxG3LQoEURM9+DInFSLUz9ToOnhhlz4DrxBOKRZ4B5MABq/hX3iUToPAOxsy3hGTkRoQJMGaS4tNSJQ9Sfwr5fWklTR0fiYrc/l7cqkUaqPJCBUgWLnYB6QrKR4kEz2JSLJyvTdWiN6QV5LHZyUmGRDdJrFNtMDj3JW0hJmYQgXmWIDVdLO6+hxMWOOwhPEqYRbVg02eNamEZrSOY2TDePfCTImFhsMSUJt9lQmql4/T3AkjpkdNdu3Csls27yFEo/kzLJTBxygkAYdOYyQK0rCAEYE5vbCKveYLORbAiGWdmiwMbWglu3qOhcDQnLOlYcbXntfz/gdFW3ujCmVuZHN0cmVhbQplbmRvYmoKMjMgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAzMzggPj4Kc3RyZWFtCnicNVI5rt1ADOt9Cl0ggHbNnOcFqX7u34aUXwpDtFaKmo4WlWn5ZSFVLZMuv+1JbYkb8vfJCokTklcl2qUMkVD5PIVUv2fLvL7WnBEgS5UKk5OSxyUL/gyX3i4c52NrP48jdz16YFWMhBIByxQTo2tZOrvDmo38PKYBP+IRcq5YtxxjFUgNunHaFe9D83nIGiBmmJaKCl1WiRZ+QfGgR61991hUWCDR7RxJcIyNUJGAdoHaSAw5sxa7qC/6WZSYCXTtiyLuosASScycYl06+g8+dCyovzbjy6+OSvpIK2tM2nejSWnMIpOul0VvN299PbhA8y7Kf17NIEFT1ihpfNCqnWMomhllhXccmgw0xxyHzBM8hzMSlPR9KH5fSya6KJE/Dg2hf18eo4ycBm8Bc9GftooDF/HZYa8cYIXSxZrkfUAqE3pg+v/X+Hn+/AMctoBUCmVuZHN0cmVhbQplbmRvYmoKMjQgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAyNDggPj4Kc3RyZWFtCnicLVE5kgNBCMvnFXpCc9PvscuR9//pCsoBg4ZDIDotcVDGTxCWK97yyFW04e+ZGMF3waHfynUbFjkQFUjSGFRNqF28Hr0HdhxmAvOkNSyDGesDP2MKN3pxeEzG2e11GTUEe9drT2ZQMisXccnEBVN12MiZw0+mjAvtXM8NyLkR1mUYpJuVxoyEI00hUkih6iapM0GQBKOrUaONHMV+6csjnWFVI2oM+1xL29dzE84aNDsWqzw5pUdXnMvJxQsrB/28zcBFVBqrPBAScL/bQ/2c7OQ33tK5s8X0+F5zsrwwFVjx5rUbkE21+Dcv4vg94+v5/AOopVsWCmVuZHN0cmVhbQplbmRvYmoKMjUgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAyMTAgPj4Kc3RyZWFtCnicNVDLDUMxCLtnChaoFAKBZJ5WvXX/a23QO2ER/0JYyJQIeanJzinpSz46TA+2Lr+xIgutdSXsypognivvoZmysdHY4mBwGiZegBY3YOhpjRo1dOGCpi6VQoHFJfCZfHV76L5PGXhqGXJ2BBFDyWAJaroWTVi0PJ+QTgHi/37D7i3koZLzyp4b+Ruc7fA7s27hJ2p2ItFyFTLUszTHGAgTRR48eUWmcOKz1nfVNBLUZgtOlgGuTj+MDgBgIl5ZgOyuRDlL0o6ln2+8x/cPQABTtAplbmRzdHJlYW0KZW5kb2JqCjE0IDAgb2JqCjw8IC9CYXNlRm9udCAvRGVqYVZ1U2FucyAvQ2hhclByb2NzIDE1IDAgUgovRW5jb2RpbmcgPDwKL0RpZmZlcmVuY2VzIFsgNDYgL3BlcmlvZCA0OCAvemVybyAvb25lIC90d28gL3RocmVlIC9mb3VyIC9maXZlIC9zaXggL3NldmVuIF0KL1R5cGUgL0VuY29kaW5nID4+Ci9GaXJzdENoYXIgMCAvRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250RGVzY3JpcHRvciAxMyAwIFIKL0ZvbnRNYXRyaXggWyAwLjAwMSAwIDAgMC4wMDEgMCAwIF0gL0xhc3RDaGFyIDI1NSAvTmFtZSAvRGVqYVZ1U2FucwovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxMiAwIFIgPj4KZW5kb2JqCjEzIDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyAzMgovRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250TmFtZSAvRGVqYVZ1U2FucyAvSXRhbGljQW5nbGUgMAovTWF4V2lkdGggMTM0MiAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTIgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM0MiA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDIzIDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxMiA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjEyIDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDUKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk4MiA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMTUgMCBvYmoKPDwgL2ZpdmUgMTYgMCBSIC9mb3VyIDE3IDAgUiAvb25lIDE5IDAgUiAvcGVyaW9kIDIwIDAgUiAvc2V2ZW4gMjEgMCBSCi9zaXggMjIgMCBSIC90aHJlZSAyMyAwIFIgL3R3byAyNCAwIFIgL3plcm8gMjUgMCBSID4+CmVuZG9iagozIDAgb2JqCjw8IC9GMSAxNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0ExIDw8IC9DQSAwIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4KL0EyIDw8IC9DQSAxIC9UeXBlIC9FeHRHU3RhdGUgL2NhIDEgPj4gPj4KZW5kb2JqCjUgMCBvYmoKPDwgPj4KZW5kb2JqCjYgMCBvYmoKPDwgPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0RlamFWdVNhbnMtbWludXMgMTggMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9Db3VudCAxIC9LaWRzIFsgMTAgMCBSIF0gL1R5cGUgL1BhZ2VzID4+CmVuZG9iagoyNiAwIG9iago8PCAvQ3JlYXRpb25EYXRlIChEOjIwMjEwNjIwMTAyMDQ1LTA3JzAwJykKL0NyZWF0b3IgKG1hdHBsb3RsaWIgMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChtYXRwbG90bGliIHBkZiBiYWNrZW5kIDMuMi4yKSA+PgplbmRvYmoKeHJlZgowIDI3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNiAwMDAwMCBuIAowMDAwMDA2ODU0IDAwMDAwIG4gCjAwMDAwMDY2MzUgMDAwMDAgbiAKMDAwMDAwNjY2NyAwMDAwMCBuIAowMDAwMDA2NzY2IDAwMDAwIG4gCjAwMDAwMDY3ODcgMDAwMDAgbiAKMDAwMDAwNjgwOCAwMDAwMCBuIAowMDAwMDAwMDY1IDAwMDAwIG4gCjAwMDAwMDAzOTkgMDAwMDAgbiAKMDAwMDAwMDIwOCAwMDAwMCBuIAowMDAwMDAyMzk3IDAwMDAwIG4gCjAwMDAwMDU0NDIgMDAwMDAgbiAKMDAwMDAwNTI0MiAwMDAwMCBuIAowMDAwMDA0ODg4IDAwMDAwIG4gCjAwMDAwMDY0OTUgMDAwMDAgbiAKMDAwMDAwMjQxOCAwMDAwMCBuIAowMDAwMDAyNzM4IDAwMDAwIG4gCjAwMDAwMDI5MDAgMDAwMDAgbiAKMDAwMDAwMzA3MCAwMDAwMCBuIAowMDAwMDAzMjIyIDAwMDAwIG4gCjAwMDAwMDMzNDMgMDAwMDAgbiAKMDAwMDAwMzQ4MyAwMDAwMCBuIAowMDAwMDAzODczIDAwMDAwIG4gCjAwMDAwMDQyODQgMDAwMDAgbiAKMDAwMDAwNDYwNSAwMDAwMCBuIAowMDAwMDA2OTE0IDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gMjYgMCBSIC9Sb290IDEgMCBSIC9TaXplIDI3ID4+CnN0YXJ0eHJlZgo3MDY4CiUlRU9GCg==\n",
"image/svg+xml": [
"\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": [
"
"
],
"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
}