forked from Networks-Learning/strategic-decisions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
utils.py
60 lines (49 loc) · 2.33 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import matplotlib.pyplot as plt
import matplotlib
def latexify(fig_width=None, fig_height=None, columns=1, largeFonts=False, font_scale=1):
"""Set up matplotlib's RC params for LaTeX plotting.
Call this before plotting a figure.
Parameters
----------
fig_width : float, optional, inches
fig_height : float, optional, inches
columns : {1, 2}
"""
# code adapted from http://www.scipy.org/Cookbook/Matplotlib/LaTeX_Examples
# Width and max height in inches for IEEE journals taken from
# computer.org/cms/Computer.org/Journal%20templates/transactions_art_guide.pdf
assert(columns in [1, 2])
if fig_width is None:
fig_width = 3.39 if columns == 1 else 6.9 # width in inches
if fig_height is None:
golden_mean = (np.sqrt(5) - 1.0) / 2.0 # Aesthetic ratio
fig_height = fig_width * golden_mean # height in inches
MAX_HEIGHT_INCHES = 8.0
if fig_height > MAX_HEIGHT_INCHES:
print("WARNING: fig_height too large:" + fig_height +
"so will reduce to" + MAX_HEIGHT_INCHES + "inches.")
fig_height = MAX_HEIGHT_INCHES
params = {'backend': 'ps',
'text.latex.preamble': ['\\usepackage{gensymb}', '\\usepackage{bm}'],
# fontsize for x and y labels (was 10)
'axes.labelsize': font_scale * 10 if largeFonts else font_scale * 7,
'axes.titlesize': font_scale * 10 if largeFonts else font_scale * 7,
'font.size': font_scale * 10 if largeFonts else font_scale * 7, # was 10
'legend.fontsize': font_scale * 10 if largeFonts else font_scale * 7, # was 10
'xtick.labelsize': font_scale * 10 if largeFonts else font_scale * 7,
'ytick.labelsize': font_scale * 10 if largeFonts else font_scale * 7,
'text.usetex': True,
'figure.figsize': [fig_width, fig_height],
'font.family': 'serif',
'xtick.minor.size': 0.5,
'xtick.major.pad': 1.5,
'xtick.major.size': 1,
'ytick.minor.size': 0.5,
'ytick.major.pad': 1.5,
'ytick.major.size': 1,
'lines.linewidth': 1.5,
'lines.markersize': 0.1,
'hatch.linewidth': 0.5
}
matplotlib.rcParams.update(params)
plt.rcParams.update(params)