{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 4. Plotting\n", "\n", "## Plotting with `matplotlib`\n", "There are many plotting libraries in the Python ecosystem, and more being added all the time. The most widely known is called `matplotlib`, which is the one we are going to focus on.\n", "\n", "`matplotlib` is a third party library, which means that it is developed and maintained by the Python Community and not the core developers of the Python language itself. This means that it doesn't ship with the Python installation and has to be installed separately before we can import it and use it in our programs. `matplotlib` is one of the oldest, most known and well documented third party libraries in Python.\n", "\n", "---\n", "\n", "If `matplotlib` is not yet installed you can install it in a way that suits your setup. \n", "\n", "> If you are using the **Standard Python** installation, go to the Windows cmd and type `pip install matplotlib`\n", "\n", "> If you are using an **Anaconda Python** distribution go to Anaconda Prompt and type `conda install matplotlib`\n", "\n", "---\n", "\n", "*The lines in the code cell below are just some setup code for showing plots inside this notebook environment. These are not relevant in an editor.*" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "cell_style": "center" }, "outputs": [], "source": [ "# Enable for plots to be shown inside Jupyter Notebook cells \n", "# (Note: This line is not needed when using an editor) \n", "%matplotlib inline \n", "\n", "# The lines below sets the figure size throughout the notebook\n", "import matplotlib as mpl\n", "mpl.rcParams['figure.figsize'] = 7, 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Importing `matplotlib` to the script\n", "\n", "The `matplotlib` library needs to be imported in a script in order to access its functions and methods:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import the plotting library and refer to it as plt later on\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is customary to import `as plt` so referencing can be done as \n", "\n", "~~~python\n", "plt.do_something() # plt replaces matplotlib.pyplot\n", "~~~\n", "Where `do_something()` is some function/method inside `matplotlib`. This is much shorter than typing\n", "~~~python\n", "matplotlib.pyplot.do_something() # Long and cumbersome to type\n", "~~~\n", "\n", "In fact, the `plt` part could be named differently, but **it is widely accepted to use this naming**, which makes it easier to read other people's code." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simple plotting API\n", "The simple API for plotting in `matplotlib` uses commands which deliberately were chosen very similar to the `Matlab` syntax. \n", "\n", "API stand for *Application Programming Interface*. It is basically a simplified way of interacting with more complex underlying code. Here, we will type fairly simple plotting commands, which do a lot of low level work in the background.\n", "\n", "Below we define some $x$- and $y$-coordinates to be plotted: " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Create x- and y-coordinates for f(x) = x^2 \n", "x = [i for i in range(-100, 105, 5)]\n", "y = [i**2 for i in x]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once the coordinates are there, creating a simple line plot is easy:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Create basic plot\n", "plt.plot(x, y)\n", "\n", "# Show plot\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Given a list of data for `x` and `y`, a line graph can be produced in a single command `plt.plot(x,y)`, while actually showing the plot has its own command. \n", "\n", "It might seem wierd that the `plt.show()` is needed, but it is not always desired to have the plot shown. Sometimes it is desired to produce the graph and have it saved to a png-file or do something else with it instead of showing it. \n", "For more complex plots there might be many different plotting commands to build the plot, but only a single showing command is needed at the end. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Customization of graphs\n", "The plot of $f(x)=x^2$ from above can be made much nicer by a little customization. The command names should make the code self-explanatory." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.title('Graph for $f(x) = x^2$', fontsize=16)\n", "plt.xlabel('$x$', fontsize=14)\n", "plt.ylabel('$f(x)$', fontsize=14)\n", "plt.plot(x, y, '.-', color='limegreen', markersize=6)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting multiple graphs in the same plot\n", "It is possible to plot many graphs in the same plot. It can also be styled with a grid and a legend:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Create x-coordinates for graphs \n", "x = [i for i in range(-10, 10, 1)]\n", "\n", "# Produce y-values for different graphs\n", "y1 = [i**2 for i in x] # f(x) = x^2\n", "y2 = [10*i**2 for i in x] # f(x) = 10x^2\n", "y3 = [i**3 for i in x] # f(x) = x^3\n", "y4 = [2*i**3 for i in x] # f(x) = 2x^3\n", "\n", "# Create plots with legend labels for each graph\n", "plt.plot(x, y1, label='$f(x)=x^2$')\n", "plt.plot(x, y2, label='$f(x)=10x^2$')\n", "plt.plot(x, y3, label='$f(x)=x^3$')\n", "plt.plot(x, y4, label='$f(x)=2x^3$')\n", "\n", "# Set titles, grid and legend\n", "plt.title('Different graphs', fontsize=16)\n", "plt.xlabel('$x$', fontsize=14)\n", "plt.ylabel('$y$', fontsize=14)\n", "plt.grid(linestyle=':')\n", "plt.legend(fontsize=14)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> * Graphs are automatically colorized, but this can of course be customized.\n", "> * Legend will by default try to position itself so it does not overlap with the graphs, but it can be forced into a certain position if need be. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fill between\n", "Plot areas can be filled based on conditions. \n", "\n", "The code in the next cell serves only to create dummy data for an example graph. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# The code in this cell is just for creating a dummy graph\n", "import numpy as np\n", "x1 = np.linspace(1, 10, 100)\n", "x2 = np.linspace(10, 15, 100)\n", "x3 = np.linspace(15, 20, 100)\n", "y1 = 2 * np.sin(1.98*x1)\n", "y2 = 3 * np.sin(-x2)\n", "y3 = 1 * np.sin(2.2 * x3)\n", "y = np.append(np.append(y1, y2), y3)\n", "x = np.append(np.append(x1, x2), x3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plotting this dummy graph and filling areas between the graph and $y=0$ with green color:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot line graph in black\n", "plt.plot(x, y, color='black', linewidth=1)\n", "\n", "# Put green/purple fill between the graph y=0\n", "plt.fill_between(x, y, color='limegreen', alpha=.25)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can make differentiated colors by given a conditional statement in the keyword argument `where`:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot line graph in black\n", "plt.plot(x, y, color='black', linewidth=1)\n", "\n", "# Put green/purple fill between the graph y=0\n", "plt.fill_between(x, y, where= y <= 0, color='limegreen', alpha=.25)\n", "plt.fill_between(x, y, where= y > 0, color='darkorchid', alpha=.25)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " > **Note:** The sequences to be plotted has to be `numpy` arrays in order to make element wise comparison like `where= y > 0`. Trying this with standard Python lists will throw a `TypeError: '<' not supported between instances of 'list' and 'int'`. This is one of the many benefits of `numpy`. See a little more info about `numpy` later in this text." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Subplots\n", "Creating subplots is also straight forward:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Create a figure for holding subplots and set size\n", "plt.figure(figsize=(14,3))\n", "\n", "# Create first plot as line plot\n", "plt.subplot(131)\n", "plt.plot([1, 2, 3, 4], [1, 2, 3, 4])\n", "\n", "# Create second plot as scatter plot\n", "plt.subplot(132)\n", "plt.plot([1, 2, 3, 4], [1, 2, 3, 4], '.', markersize=12)\n", "\n", "# Create third plot as bar plot\n", "plt.subplot(133)\n", "plt.bar([1, 2, 3, 4], [1, 2, 3, 4])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> * The `subplot` argument conatins three digits, where the first one is the number of rows, the second the number of columns and the third the current plot to manipulate. \n", "> * For making more complicated grid formations, shared axis tick marks etc. The **Object Oriented API** should be used instead." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Object Oriented API\n", "Almost every aspect of a visualization can be controlled. However, in order to access more complex controls, the way of interaction with the graph elements also becomes a little more complex. \n", "\n", "In order to use the more powerful `matplotlib` API, we get into so-called *Object Oriented Programming*. We access each element of a figure as an *object* and manipulate that object.\n", "\n", "The figure below gives an overview of the objects that can be controlled in a figure to enable very high customizability of plots.\n", "\n", "![title](matplotlib_objects_anatomy_of_a_figure.png)\n", "\n", "Source: [Anatomy of a figure](https://matplotlib.org/3.1.1/gallery/showcase/anatomy.html)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Subplots" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Note especially that the `Axes` object is the actual content of the plot, and therefore does not refer to `x`- or `y`-axis themselves.\n", "\n", "The Object Oriented API is recommended for more complex plotting like creation of larger grids of subplots where each plot needs independent adjustments. \n", "\n", "In the example below we still run the `plt.` command, but we save it to two variables `fig` and `ax`: " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Create a 2 by 3 subplot grid with shared x- and y-axis\n", "fig, ax = plt.subplots(2, 3, sharex='col', sharey='row')\n", "\n", "# Put content on the plot at grid spot 1,1 (0 indexed)\n", "ax[1, 1].plot([1, 2, 3], [1 ,2, 3], 'g-.')\n", "ax[1, 1].plot([3, 2, 1], [1, 2, 3], 'm:')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> * The figure that is created is saved in the variable `fig` \n", "> * The axes for all the subplots are saved in an array variable `ax`\n", "> * Individual subplots can be manipulated by indexing into the `ax` variable. Indexing starts from `0`, so `ax[1,1]` is the middle plot in the bottom row as seen above.\n", "> * There are many other plot types where the *Object Orientated API* is preferred compared to the simple Matlab style one." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Online help and plotting galleries\n", "Instead of creating a figure from scrath, it can be quicker to serch the web for the graph style of choice, fetch a piece of code and modify it. \n", "\n", "Here are some useful links:\n", "\n", "* Plotting gallery for `matplotlib` with code examples: https://matplotlib.org/gallery/index.html\n", "\n", "\n", "* Some more examples with `matplotlib`: https://www.machinelearningplus.com/plots/top-50-matplotlib-visualizations-the-master-plots-python/\n", "\n", "\n", "* Predefined styles `matplotlib`: https://matplotlib.org/gallery/style_sheets/style_sheets_reference.html\n", "\n", "\n", "* Predefined color names for `matplotlib`: https://matplotlib.org/gallery/color/named_colors.html. Colors can also be defined as hexidecimal or RGB.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Numerical computation library: `numpy`\n", "Another very well known and broadly used third party library is `numpy` (short for Numerical Python), which contains many useful features for fast and efficient numerical calculations. This library has a lot of the same functionality as `Matlab` and utilizes vectorization to perform calculations.\n", "\n", "It can be installed in the same way as every other third party library, namely by entering `pip install numpy` or `conda install numpy` from the relevant Prompt.\n", "\n", "Once installed `numpy` can be used as shown below. Like with the `matplotlib` import, `numpy`also has a community accepted standard of importing as `np`:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The basic data structure in `numpy` is called an array, which can be compared to a normal Python list.\n", "\n", "A numpy array can be created, for example from a list, like this:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# A normal Python list\n", "L = [1, 2, 3, 4, 5] \n", "\n", "# List converted to numpy array\n", "arr = np.array(L) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Printing the array looks like a normal list:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 2 3 4 5]\n" ] } ], "source": [ "print(arr) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But it is in fact a `numpy` array, which can be seen by inspecting the type:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "print(type(arr))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The fact that `numpy` uses verctorization can be seen for example by performing mulitplication:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 2 4 6 8 10]\n" ] } ], "source": [ "# Multiply all array elements by 2 and print result\n", "arr_double = 2 * arr\n", "\n", "print(arr_double)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that doing the same operation with a normal Python list is a little more complicated. Here shown with a list comprehension, but a normal `for` loop could also be used. " ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[2, 4, 6, 8, 10]\n" ] } ], "source": [ "# Multiply all list elements by 2 and print result\n", "L_double = [2*i for i in L]\n", "\n", "print(L_double)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Function: `np.linspace()`\n", "\n", "As mentioned, `numpy` has many useful functions and methods. One of the most used functions is \n", "\n", "~~~python\n", "numpy.linspace(start, stop, num=50) \n", "~~~\n", "\n", "which will generate an array of `num` numbers evenly spaced between `start` and `end`. As we saw from Session 3 about functions, the `num=50` means that `num` is an optional argument, the default value of which is 50. So, if `num` is not specified, the generated array will have 50 evenly spaced numbers between `start`and `end`.\n", "\n", "**Note** that the `numpy.linspace()` function has more arguments, which are not shown here. See the documention for more info: https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html\n", "\n", "An example:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linspace(0, 1, 11)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `numpy.linspace()` function can especially be useful when generating $x$-values for plotting purposes." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Benefits of `numpy`\n", "* In general `numpy` operations are **much** faster than equivalent operations in standard Python. When handling large amounts of data or computationally intensive tasks, `numpy` should be therefore preferred. \n", "\n", "\n", "* Many useful functions and methods for working with data are predefined and optimized in the library. Before starting to reinvent the wheel for array manipulations, check if a `numpy` solution exists. `np.linspace()` is just one example of this.\n", "\n", "\n", "* A lot of other libraries are built on top of or uses `numpy`. In fact `matplotlib` uses it for its plotting operations.\n", "\n", "\n", "* Using `numpy`'s predefined functions and methods often lead to more readable code compared to using other ways. Consider e.g. the example from above with element-wise multiplication. The Matlab-style syntax is just more reable for numeric computation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "# Exercise 1.1\n", "All exercises use the simple API described above.\n", "\n", "Plot a black line graph with dots at the points with these coordinates:\n", "\n", "~~~python\n", "x = [1, 3, 6, 9, 16]\n", "y = [7, 3, 7, 1, 5]\n", "~~~\n", "\n", "Remember to `import matplotlib.pyplot as plt` and to call `plt.show()`. \n", "\n", "The color can be set by `plt.plot(..., color='black')` or by a shortcut `plt.plot(..., 'k')`, where `'k'` is black becuase `'b'` is blue. \n", "\n", "# Exercise 1.2\n", "Set the plot title on the graph from Exercise 1.1. You choose what the title should be.\n", "\n", "# Exercise 1.3\n", "Set the label (axis title) of the $x$- and $y$-axis on the graph from Exercise 1.1. You choose what the text should be.\n", "\n", "# Exercise 1.4\n", "Add the graphs with the following $y$-values to the plot from Exercise 1.1. Use the same $x$-values for all curves.\n", "\n", "~~~python\n", "y2 = [9, 5, 5, 2, 6]\n", "y3 = [4, 6, 2, 6, 8]\n", "y4 = [1, 8, 1, 3, 2]\n", "~~~\n", "\n", "# Exercise 1.5\n", "Go back through the code from the previous exercises and add a `label` to the plots that were produced. Choose a label text freely.\n", "Afterwards, add a legend to the plot. \n", "\n", "# Exercise 1.6 \n", "Save the figure to a png-file. This can be done by the command `plt.savefig(desired_filename.png)`. This will save it in the same folder as you have your script.\n", "\n", "\n", "*If you are dissatisfied with the size of the saved figure, this can be adjusted by explicitly creating the figure object before any of the graphs are created. Creating the figure object and setting a size is done by `plt.figure(figsize=(width, height))`. Both `width` and `height` are in inches. Try with different values.*\n", "\n", "\n", "*Note: When using the simple API it is not necessary to explicitly create the figure object before starting the plotting with `plt.plot()`, as the figure is automatically created in the background with default settings. When saving to a file where it is not possible to drag the plot after creation, it is often useful to set the figure size beforehand*\n", "\n", "# Exercise 2.1\n", "Create a new figure by the command `plt.figure()`. This will create a new figure object that subsequent commands will tie to. This is to avoid having the commands in this exercise be plotted in the plot from the previous exercises. \n", "\n", "\n", "Redo the graphs from the previous exercises, this time split into four subplots instead. You choose how to structure the grid and how to style the graphs with colors, titles, line types etc.\n", "\n", "\n", "# Exercise 2.2\n", "Create a new figure and replicate the same subplots as in Exercise 2.1. But this time, turn the plots into bar plots. The only difference is that the plotting call should now be `plt.bar(...)`.\n", "\n", "\n", "# Exercise 3.1\n", "Create plot that is filled with some color of your choice between $y=0$ and the curve defined by $xx$ and $yy$ below:\n", "\n", "~~~python \n", "import numpy as np\n", "xx = np.linspace(-100, 100, 100)\n", "yy = xx**2 - 3027 # <- Element-wise exponentiation and subtraction (numpy)\n", "~~~\n", "\n", "\n", "# Exercise 4.1\n", "Use `numpy.linspace()` to create an array with 10 values from 1-10. Save the array in a a variable called `x_arr`.\n", "\n", "Use the code below to create the $y$-values for five graphs. \n", "\n", "~~~python \n", "y_arr1 = np.random.rand(10)\n", "y_arr2 = np.random.rand(10)\n", "y_arr3 = np.random.rand(10)\n", "y_arr4 = np.random.rand(10)\n", "y_arr5 = np.random.rand(10)\n", "~~~\n", "\n", "\n", "*The `numpy.random.rand()` function creates random values between 0 and 1 (see documentation for more: https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.rand.html)*\n", "\n", "\n", "Create a loop that goes through the five graphs. Each loop should create a figure with your chosen size and settings for the current graph and save it to a png-file.\n", "You should end up with five png-files each containing only a single graph/curve." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# If you are up for more \n", "Take the polygon plotting function `plot_polygon()` from the exercise solutions from Session 3. Create different polygons, run them through a for loop and save them to png-files. Remember that `plot_polygon()` calls the other functions `polygon_area()` and `polygon_centroid`, which also have to be copied." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# End of exercises\n", "\n", "*The cell below is for setting the style of this document. It's not part of the exercises.*" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import HTML\n", "HTML(''.format(open('../css/cowi.css').read()))" ] } ], "metadata": { "hide_input": false, "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.7.5" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autoclose": false, "autocomplete": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": false, "user_envs_cfg": false }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Table of Contents", "toc_cell": false, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "228.507px" }, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 2 }