Source code for greenlearning.utils.plotting

import numpy as np
import matplotlib as mpl
import matplotlib.ticker as mticker

[docs]def figsize(scale, nplots = 1): """Define the figure size.""" fig_width_pt = 390.0 # Get this from LaTeX using \the\textwidth inches_per_pt = 1.0/72.27 # Convert pt to inch golden_mean = (np.sqrt(5.0)-1.0)/2.0 # Aesthetic ratio (you could change this) fig_width = fig_width_pt*inches_per_pt*scale # width in inches fig_height = nplots*fig_width*golden_mean # height in inches fig_size = [fig_width,fig_height] return fig_size
pgf_with_latex = { # setup matplotlib to use latex for output "pgf.texsystem": "pdflatex", # change this if using xetex or lautex "text.usetex": True, # use LaTeX to write all text "font.family": "DejaVu Sans", "font.serif": [], # blank entries should cause plots to inherit fonts from the document "font.sans-serif": [], "font.monospace": [], "axes.labelsize": 10, # LaTeX default is 10pt font. "font.size": 10, "legend.fontsize": 8, # Make the legend/label fonts a little smaller "xtick.labelsize": 8, "ytick.labelsize": 8, "figure.figsize": figsize(1.0), # default fig size of 0.9 textwidth "pgf.preamble": [ r"\usepackage[utf8x]{inputenc}", # use utf8 fonts becasue your computer can handle it :) r"\usepackage[T1]{fontenc}", # plots will be generated using this preamble ] } mpl.rcParams.update(pgf_with_latex) import matplotlib.pyplot as plt # I make my own newfig and savefig functions
[docs]def newfig(width, nplots = 1): """Create a new figure.""" fig = plt.figure(figsize=figsize(width, nplots),dpi=600) ax = fig.add_subplot(111) return fig, ax
[docs]def savefig(filename, crop = True): """Save the figure as a pdf file.""" if crop == True: plt.savefig('{}.pdf'.format(filename), bbox_inches='tight', pad_inches=0) else: plt.savefig('{}.pdf'.format(filename), bbox_inches='tight', pad_inches=0.03)
[docs]class MathTextSciFormatter(mticker.Formatter): """Format the axis of the figure.""" def __init__(self, fmt="%1.2e"): self.fmt = fmt def __call__(self, x, pos=None): s = self.fmt % x decimal_point = '.' positive_sign = '+' tup = s.split('e') significand = tup[0].rstrip(decimal_point) sign = tup[1][0].replace(positive_sign, '') exponent = tup[1][1:].lstrip('0') if exponent: exponent = '10^{%s%s}' % (sign, exponent) if significand and exponent: s = r'%s{\times}%s' % (significand, exponent) else: s = r'%s%s' % (significand, exponent) return "${}$".format(s)