24

How to show an easy latex-formula in python? Maybe numpy is the right choice?

I have python code like:

a = '\frac{a}{b}'

and want to print this in a graphical output (like matplotlib).

mkrieger1
  • 19,194
  • 5
  • 54
  • 65
kame
  • 20,848
  • 33
  • 104
  • 159
  • What do you mean 'show latex formula in python'. Do you want to extract a formula from a .tex file and print it to python's stdout, implement a formula shown in a a .tex (pdf/ps) file in python or what? – Matti Lyra Oct 26 '10 at 21:46
  • Can you clarify? Where do you want to print it? Do you want to generate images or are you looking for something inside a gui? – Wolph Oct 26 '10 at 21:47
  • sorry for the unclear question. :/ Please see the edit. – kame Oct 26 '10 at 21:56
  • See the docs on the matplotlib site: - [Text rendering With LaTeX](http://matplotlib.sourceforge.net/users/usetex.html) – ars Oct 26 '10 at 22:07
  • 1
    Possible duplicate of [How to programmatically generate markdown output in Jupyter notebooks?](https://stackoverflow.com/questions/36288670/how-to-programmatically-generate-markdown-output-in-jupyter-notebooks) – Paul Wintz Nov 28 '18 at 20:21
  • This question has a much easier-to-use answer here: https://stackoverflow.com/a/36313217/6651650 – Paul Wintz Nov 28 '18 at 20:22

6 Answers6

21

As suggested by Andrew little work around using matplotlib.

import matplotlib.pyplot as plt
a = '\\frac{a}{b}'  #notice escaped slash
plt.plot()
plt.text(0.5, 0.5,'$%s$'%a)
plt.show()
ostrokach
  • 17,993
  • 11
  • 78
  • 90
Bernardo Kyotoku
  • 459
  • 4
  • 14
19

An answer based on this one specific to Jupyter notebook, using f-string to format an $x_i$ variable:

from IPython.display import display, Latex
for i in range(3):
    display(Latex(f'$x_{i}$'))

Screenshot of the output

Note: The f-string (formatted string literal) uses curly braces to insert the value of the Python variable i. You’ll need to double the curly braces (f'{{}}') to actually use {} in the LaTeX code. Otherwise, you can use single curly braces directly in a normal Python string (not an f-string).

Side Note: I'm surprised Stack Overflow still doesn’t have a math markup.

ib.
  • 27,830
  • 11
  • 80
  • 100
Paul Rougieux
  • 10,289
  • 4
  • 68
  • 110
8

Creating mathematical formulas in Pandas.

a = r'\frac{a}{b}'
ax = plt.axes([0,0,0.3,0.3]) #left,bottom,width,height
ax.set_xticks([])
ax.set_yticks([])
ax.axis('off')
plt.text(0.4,0.4,'$%s$' %a,size=50,color="green")

enter image description here

a = r'f(x) = \frac{\exp(-x^2/2)}{\sqrt{2*\pi}}'
ax = plt.axes([0,0,0.3,0.3]) #left,bottom,width,height
ax.set_xticks([])
ax.set_yticks([])
ax.axis('off')
plt.text(0.4,0.4,'$%s$' %a,size=50,color="green")

enter image description here

Wojciech Moszczyński
  • 2,893
  • 21
  • 27
5

Matplotlib can already do TeX, by setting text.usetex: True in ~/.matplotlib/matplotlibrc. Then, you can just use TeX in all displayed strings, e.g.,

ylabel(r"Temperature (K) [fixed $\beta=2$]")

(be sure to use the $ as in normal in-line TeX!). The r before the string means that no substitutions are made; otherwise you have to escape the slashes as mentioned.

More info at the matplotlib site.

Andrew Jaffe
  • 26,554
  • 4
  • 50
  • 59
  • Is matplotlibrc in the matplotlib-folder? I cant find it :/ – kame Oct 26 '10 at 22:23
  • On UNIX systems, it's in the directory I mention above. On windows, I don't know. Check the Docs. – Andrew Jaffe Oct 26 '10 at 22:56
  • I'm using Ubuntu 12 and installed matplotlib in the system (not user), in my case its on /etc/matplotlibrc – neu-rah Feb 08 '13 at 22:18
  • 1
    Is that option really necessary? [The documentation](http://matplotlib.org/users/usetex.html) states that's if you want to use an actual LaTeX installation for advanced features, while TeX-math rendering is [natively supported](http://matplotlib.org/users/mathtext.html#mathtext-tutorial) – Tobias Kienzler Apr 09 '13 at 06:04
3

Without ticks:

a = r'\frac{a}{b}'
ax = plt.axes([0,0,0.1,0.2]) #left,bottom,width,height
ax.set_xticks([])
ax.set_yticks([])
plt.text(0.3,0.4,'$%s$' %a,size=40)
restrepo
  • 479
  • 3
  • 14
1

Draw with matplotlib,

import matplotlib.pyplot as plt
a = r'\frac{a}{b}'
ax=plt.subplot(111)
ax.text(0.5,0.5,r"$%s$" %(a),fontsize=30,color="green")
plt.show()

enter image description here

LF00
  • 27,015
  • 29
  • 156
  • 295