Skip to content

Instantly share code, notes, and snippets.

@ahwillia ahwillia/
Last active Mar 31, 2020

What would you like to do?
Plot a LaTeX equation as a matplotlib figure
# Majority of credit goes to Chris Holdgraf, @choldgraf, and this StackOverflow
# post:
import pylab as plt
import numpy as np
def plot_equation(eq, fontsize=50, outfile=None, padding=0.1, **kwargs):
"""Plot an equation as a matplotlib figure.
eq : string
The equation that you wish to plot. Should be plottable with
latex. If `$` is included, they will be stripped.
fontsize : number
The fontsize passed to plt.text()
outfile : string
Name of the file to save the figure to.
padding : float
Amount of padding around the equation in inches.
ax : matplotlib axis
The axis with your equation.
# clean equation string
eq = eq.strip('$').replace(' ', '')
# set up figure
f = plt.figure()
ax = plt.axes([0,0,1,1])
r = f.canvas.get_renderer()
# display equation
t = ax.text(0.5, 0.5, '${}$'.format(eq), fontsize=fontsize,
# resize figure to fit equation
bb = t.get_window_extent(renderer=r)
w,h = bb.width/f.dpi,np.ceil(bb.height/f.dpi)
# set axis limits so equation is centered
if outfile is not None:
plt.savefig(outfile, **kwargs)
return ax

This comment has been minimized.

Copy link
Owner Author

ahwillia commented Jul 19, 2016

plot_equation('x = \\frac{-b \\pm \\sqrt{b^2 - 4ac}}{2a}',outfile='test',padding=0.1)



This comment has been minimized.

Copy link

mvww11 commented Mar 31, 2020

Very valuable for me. Thank you very much!
Is it possible to set DPI resolution?


This comment has been minimized.

Copy link
Owner Author

ahwillia commented Mar 31, 2020

Yes, I just slightly modified the code to take **kwargs and pass them to savefig.

So you should be able to do plot_equation(..., outfile="test.png", dpi=500).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.