Initial commit
This commit is contained in:
commit
ce54c823b1
5 changed files with 292 additions and 0 deletions
2
Makefile
Normal file
2
Makefile
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
slides.pdf: slides.rst dark.style dark.png
|
||||||
|
rst2pdf -b1 -s dark.style,fruity --fit-background-mode=scale slides.rst
|
||||||
BIN
dark.png
Normal file
BIN
dark.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 275 B |
86
dark.style
Normal file
86
dark.style
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
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
|
||||||
46
debug.style
Normal file
46
debug.style
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
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]
|
||||||
|
|
||||||
158
slides.rst
Normal file
158
slides.rst
Normal file
|
|
@ -0,0 +1,158 @@
|
||||||
|
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
|
||||||
Loading…
Add table
Reference in a new issue