--- /dev/null
+slides.pdf: slides.rst dark.style dark.png
+ rst2pdf -b1 -s dark.style,fruity --fit-background-mode=scale slides.rst
--- /dev/null
+pageSetup:
+ size: null
+ width: 16cm
+ height: 9cm
+ margin-top: 0cm
+ margin-bottom: 0cm
+ margin-left: 0cm
+ margin-right: 0cm
+ margin-gutter: 0cm
+ spacing-header: 2mm
+ spacing-footer: 2mm
+ firstTemplate: standardPage
+
+pageTemplates:
+ standardPage:
+ frames: []
+ [3%, 3%, 94%, 94%]
+ showHeader: false
+ showFooter: false
+ background: dark.png
+
+linkColor: #add8e6
+
+styles:
+ normal:
+ fontSize: 10
+ textColor: white
+
+ bodytext:
+ alignment: TA_LEFT
+ hyphenation: false
+ spaceBefore: 3
+
+ titleslideinfo:
+ parent: normal
+ alignment: TA_CENTER
+
+ literal:
+ textColor: silver
+
+ table:
+ commands: []
+ [ROWBACKGROUNDS, [0, 0], [-1, -1], [#333333, black]]
+
+ table-heading:
+ parent: heading
+ backColor: black
+ alignment : TA_LEFT
+
+ code:
+ parent: literal
+ fontSize: 11
+ leftIndent: 0
+ spaceBefore: 8
+ spaceAfter: 8
+ backColor: #333333
+
+ bullet-list:
+ spaceBefore: 0
+ spaceAfter: 0
+ commands: []
+ [VALIGN, [0, 0], [-1, -1], TOP]
+ [TOPPADDING, [0, 0], [-1, -1], 0]
+ [BOTTOMPADDING, [0, 0], [-1, -1], 0]
+
+ endnote:
+ spaceBefore: 0
+ spaceAfter: 0
+ colWidths: [3cm, null]
+
+ field-list:
+ spaceBefore: 0
+ spaceAfter: 0
+
+ item-list:
+ spaceBefore: 0
+ spaceAfter: 6
+ commands: []
+ [VALIGN, [0, 0], [-1, -1], TOP]
+ [TOPPADDING, [0, 0], [-1, -1], 5]
+ [BOTTOMPADDING, [0, 0], [-1, -1], 20]
+ [RIGHTPADDING, [0, 0], [1, -1], 0]
+
+ option-list:
+ spaceBefore: 0
+ spaceAfter: 0
--- /dev/null
+styles:
+ bullet-list:
+ spaceBefore: 0
+ spaceAfter: 0
+ commands: []
+ [VALIGN, [0, 0], [-1, -1], TOP]
+ [TOPPADDING, [0, 0], [-1, -1], 0]
+ [BOTTOMPADDING, [0, 0], [-1, -1], 0]
+ [INNERGRID, [0, 0], [-1, -1], 0.25, red]
+ [BOX, [0, 0], [-1, -1], 0.25, red]
+
+ endnote:
+ spaceBefore: 0
+ spaceAfter: 0
+ colWidths: [3cm, null]
+ commands: []
+ [INNERGRID, [0, 0], [-1, -1], 0.25, orange]
+ [BOX, [0, 0], [-1, -1], 0.25, orange]
+
+ field-list:
+ spaceBefore: 0
+ spaceAfter: 0
+ commands: []
+ [INNERGRID, [0, 0], [-1, -1], 0.25, green]
+ [BOX, [0, 0], [-1, -1], 0.25, green]
+
+ item-list:
+ spaceBefore: 0
+ spaceAfter: 0
+ commands: []
+ [VALIGN, [0, 0], [-1, -1], TOP]
+ [TOPPADDING, [0, 0], [-1, -1], 0]
+ [BOTTOMPADDING, [0, 0], [-1, -1], 20]
+ [RIGHTPADDING, [0, 0], [1, -1], 0]
+ [INNERGRID, [0, 0], [-1, -1], 0.25, gray]
+ [BOX, [0, 0], [-1, -1], 0.25, gray]
+
+
+
+ option-list:
+ spaceBefore: 0
+ spaceAfter: 0
+ commands: []
+ [INNERGRID, [0, 0], [-1, -1], 0.25, blue]
+ [BOX, [0, 0], [-1, -1], 0.25, blue]
+
--- /dev/null
+Plotting with Matplotlib
+------------------------
+
+Also creating a presentation with rst2pdf
+=========================================
+
+Data Structures
+---------------
+Favour simpler data structures if they do what you need. In order:
+
+#. Built-in Lists
+ - 2xN data or simpler
+ - Can't install system dependencies
+#. Numpy arrays
+ - 2 (or higher) dimensional data
+ - Lots of numerical calculations
+#. Pandas series/dataframes
+ - 'Data Wrangling', reshaping, merging, sorting, querying
+ - Importing from complex formats
+
+Shamelessly stolen from https://stackoverflow.com/a/45288000
+
+Loading Data from Disk
+----------------------
+Natively
+========
+
+.. code-block:: python
+
+ >>> import csv
+ >>> with open('eggs.csv', newline='') as csvfile:
+ ... spam = csv.reader(csvfile,
+ ... delimiter=' ',
+ ... quotechar='|')
+ ... for row in spam:
+ ... # Do things
+ ... pass
+
+Loading Data from Disk
+----------------------
+Numpy
+=====
+
+.. code-block:: python
+
+ >>> import numpy
+ >>> spam = numpy.genfromtxt('eggs.csv',
+ ... delimiter=' ',
+ ... dtype=None) # No error handling!
+ >>> for row in spam:
+ ... # Do things
+ ... pass
+
+``numpy.genfromtxt`` will try to infer the datatype of each column if
+``dtype=None`` is set.
+
+``numpy.loadtxt`` is generally faster at runtime if your data is well formated
+(no missing values, only numerical data or constant length strings)
+
+Loading Data from Disk
+----------------------
+Numpy NB.
+=========
+**Remind me to look at some actual numpy usage at the end**
+
+- I think numpy does some type coercion when creating arrays.
+- Arrays created by ``numpy.genfromtxt`` can not in general be indexed like
+ ``data[xstart:xend, ystart:yend]``.
+- Data of unequal types are problematic! Pandas *may* be a better choice in
+ that case.
+- Specifying some value for ``dtype`` is probably necessary in most cases in
+ practice: https://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
+
+Loading Data from Disk
+----------------------
+Pandas
+======
+
+.. code-block:: python
+
+ >>> import pandas
+ >>> # dtype=None is def
+ >>> spam = pandas.read_csv('eggs.csv',
+ ... delimiter=' ',
+ ... header=None)
+ >>> for row in spam:
+ ... # Do things
+ ... pass
+
+``header=None`` is required if the flie does not have a header.
+
+
+
+Generating Data for Testing
+---------------------------
+
+Generating the data on the fly with numpy is convenient.
+
+.. code-block:: python
+
+ >>> import numpy.random as ran
+ >>> # For repeatability
+ >>> ran.seed(7890234)
+ >>> # Uniform [0, 1) floats
+ >>> data = ran.rand(100, 2)
+ >>> # Uniform [0, 1) floats
+ >>> data = ran.rand(100, 100, 100)
+ >>> # Std. normal floats
+ >>> data = ran.randn(100)
+ >>> # 3x14x15 array of binomial ints with n = 100, p = 0.1
+ >>> data = ran.binomial(100, 0.1, (3, 14, 15))
+
+Plotting Time Series
+--------------------
+
+Plot data of the form:
+
+.. math:: y=f(t)
+
+
+Subplots
+--------
+
+
+Saving Plots
+------------
+
+So far I've just displayed plots with ``plt.show()``. You can actually save
+the plots from that interface manually, but when scripting, it's convenient
+to do so automatically:
+
+.. code-block:: python
+
+ >>> # Some plotting has previously occured
+ >>> plt.savefig('eggs.pdf', dpi=300, transparent=False)
+
+The output format is interpreted from the file extension.
+The keyword arguments are optional here. Other options exist.
+
+Error Bars
+----------
+
+
+Stacked Bar Graph
+-----------------
+
+
+Resources
+---------
+NumPy User Guide: https://docs.scipy.org/doc/numpy/user/index.html
+
+NumPy Reference: https://docs.scipy.org/doc/numpy/reference/index.html#reference
+
+Matplotlib example gallery: https://matplotlib.org/gallery/index.html
+
+Pandas: It probably exists. Good luck.
+
+This presentation: https://git.friedersdorff.com/max/plotting_with_matplotlib.git