Skip to content

Instantly share code, notes, and snippets.

@bkanuka
Last active April 28, 2022 10:44
Show Gist options
  • Save bkanuka/10796230 to your computer and use it in GitHub Desktop.
Save bkanuka/10796230 to your computer and use it in GitHub Desktop.
import numpy as np
import matplotlib as mpl
mpl.use('pgf')
def figsize(scale):
fig_width_pt = 469.755 # 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 = 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": "serif",
"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(0.9), # 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
def newfig(width):
plt.clf()
fig = plt.figure(figsize=figsize(width))
ax = fig.add_subplot(111)
return fig, ax
def savefig(filename):
plt.savefig('{}.pgf'.format(filename), bbox_inches='tight')
plt.savefig('{}.pdf'.format(filename), bbox_inches='tight')
# Simple plot
fig, ax = newfig(0.6)
def ema(y, a):
s = []
s.append(y[0])
for t in range(1, len(y)):
s.append(a * y[t] + (1-a) * s[t-1])
return np.array(s)
y = [0]*200
y.extend([20]*(1000-len(y)))
s = ema(y, 0.01)
ax.plot(s)
ax.set_xlabel('X Label')
ax.set_ylabel('EMA')
savefig('ema')
@dlithio
Copy link

dlithio commented Oct 3, 2015

Thanks for the guide -- I found it quite helpful. I made a few updates. The tight_layout option was required for me to get it to work properly. The other change was just to remove a warning.

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment