annotate talk/code/plots.py @ 48:1baa6b0a7199

move duplicate code into function this changed the dimensions of the generated image slightly
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Sun, 15 May 2016 00:20:01 -0400
parents 7887a0b32539
children 4a669a51f49c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
6daaf6a8e431 Add code to plot boys and girls
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
1 import matplotlib.pyplot as plt
6daaf6a8e431 Add code to plot boys and girls
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
2 import matplotlib.cbook as cbook
6daaf6a8e431 Add code to plot boys and girls
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
3 import numpy as np
6daaf6a8e431 Add code to plot boys and girls
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
4
48
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
5 def boxhistplot(data, fig=None, rect=None, xticks=None, colour=None,
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
6 bins=None, title=None):
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
7 data_stats = cbook.boxplot_stats(data)
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
8
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
9 left, bottom, width, height = rect
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
10 histheight = 0.75*height
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
11 boxheight = 0.25*height
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
12
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
13 # setup the figure and axes
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
14 bpAx = fig.add_axes([left, bottom+histheight, width, boxheight])
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
15 histAx = fig.add_axes([left, bottom, width, histheight])
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
16
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
17 # plot stuff
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
18 bpAx.bxp(data_stats, vert=False, flierprops={"marker": 'x'})
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
19 histAx.hist(data, bins=bins, color=colour)
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
20
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
21 # confirm that the axes line up
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
22 xlims = np.array([bpAx.get_xlim(), histAx.get_xlim()])
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
23 for ax in [bpAx, histAx]:
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
24 ax.set_xlim([xlims.min(), xlims.max()])
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
25
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
26 bpAx.set_xticklabels([]) # clear out overlapping xlabels
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
27 bpAx.set_yticks([]) # don't need that 1 tick mark
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
28 bpAx.set_title(title,fontsize=20)
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
29
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
30 histAx.set_xticks(xticks)
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
31 histAx.get_xaxis().tick_bottom()
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
32 bpAx.get_xaxis().tick_top()
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
33
45
6daaf6a8e431 Add code to plot boys and girls
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
34 with open("../../data/men") as f:
6daaf6a8e431 Add code to plot boys and girls
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
35 men = [float(x) for x in f.readlines()]
6daaf6a8e431 Add code to plot boys and girls
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
36
6daaf6a8e431 Add code to plot boys and girls
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
37 with open("../../data/women") as f:
6daaf6a8e431 Add code to plot boys and girls
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
38 women = [float(x) for x in f.readlines()]
6daaf6a8e431 Add code to plot boys and girls
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
39
46
7887a0b32539 put the two boxplots above each other
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 45
diff changeset
40 fig = plt.figure(figsize=(12,8))
48
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
41 xticks = np.arange(5,105,5)
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
42 bins = 0.5 + np.arange(0,100)
46
7887a0b32539 put the two boxplots above each other
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 45
diff changeset
43
48
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
44 boxhistplot(men, fig=fig, rect=[0.05, 0.55, 0.9, 0.35], xticks=xticks,
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
45 colour=[0.3, 0.3, 1],
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
46 bins=bins, title="Ages of actors")
45
6daaf6a8e431 Add code to plot boys and girls
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff changeset
47
48
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
48 boxhistplot(women, fig=fig, rect=[0.05, 0.1, 0.9, 0.35], xticks=xticks,
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
49 colour='pink',
1baa6b0a7199 move duplicate code into function
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 46
diff changeset
50 bins=bins, title="Ages of actresses")
46
7887a0b32539 put the two boxplots above each other
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 45
diff changeset
51
7887a0b32539 put the two boxplots above each other
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 45
diff changeset
52 plt.savefig("boys-and-girls.pdf")