Python Tricks
These are some stupid little python tricks I use (mostly to make plots pretty).
Formating for journals
This little bit of code makes plots that are very natural for two-column journals. You can adjust the fig_width to the journal of your choice
import matplotlib.pyplot as plt
def set_journal(fig_width=245.26653, height_factor=1.):
"""
Sets the matplotlib rc params to generate plots that are the proper
size for two column journals. Simple specify the column width
:param fig_width: Get this from LaTeX using \showthe\columnwidth
"""
fig_width_pt =fig_width
inches_per_pt = 1.0/72.27 # Convert pt to inch
golden_mean = (np.sqrt(5)-1.0)/2.0 # Aesthetic ratio
fig_width = fig_width_pt*inches_per_pt # width in inches
fig_height = fig_width*golden_mean * height_factor # height in inches
fig_size = [fig_width,fig_height]
params = {'backend': 'ps',
'axes.labelsize': 10,
'font.size': 10,
'legend.fontsize': 10,
'xtick.labelsize': 8,
'ytick.labelsize': 8,
'text.usetex': True,
'figure.figsize': fig_size,
'font.family': 'serif'}
plt.rcParams.update(params)
def reset():
"""
Reset the plotting settings
"""
plt.rcdefaults()
#optional for notebook
#%matplotlib inline
#%matplotlib notebook
CMAP arrays
I often want an to create a color map to color points based on values in an array. It is relatively easy to do, but I forget.
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
def array_to_cmap(values,cmap,use_log=False):
"""
Generates a color map and color list that is normalized
to the values in an array. Allows for adding a 3rd dimension
onto a plot
:param values: a list a values to map into a cmap
:param cmap: the mpl colormap to use
:param use_log: if the mapping should be done in log space
"""
if use_log:
norm = mpl.colors.LogNorm(vmin=min(values),vmax=max(values))
else:
norm = mpl.colors.Normalize(vmin=min(values),vmax=max(values))
cmap = plt.cm.ScalarMappable(norm=norm,cmap=cmap)
rgb_colors = map(cmap.to_rgba,values)
return cmap, rgb_colors