How can I format a float using matplotlib's LaTeX formatter?

荒凉一梦 提交于 2019-11-28 08:05:24

问题


I have a number in my python script that I want to use as part of the title of a plot in matplotlib. Is there a function that converts a float to a formatted TeX string?

Basically,

str(myFloat)

returns

3.5e+20

but I want

$3.5 \times 10^{20}$

or at least for matplotlib to format the float like the second string would be formatted. I'm also stuck using python 2.4, so code that runs in old versions is especially appreciated.


回答1:


You can do something like:

ax.set_title( "${0} \\times 10^{{{1}}}$".format('3.5','+20'))

in the old style:

ax.set_title( "$%s \\times 10^{%s}$" % ('3.5','+20'))



回答2:


With old stype formatting:

print r'$%s \times 10^{%s}$' % tuple('3.5e+20'.split('e+'))

with new format:

print r'${} \times 10^{{{}}}$'.format(*'3.5e+20'.split('e+'))



回答3:


Install the num2tex package:

pip install num2tex

and format your title as:

ax.set_title('${}$'.format(num2tex(3.5e20)))

or use the _repr_latex_() method:

ax.set_title(num2tex(3.5e20)._repr_latex_())

which will give you the same thing.

num2tex inherits from str so the format function can be used as you would use it for a string:

ax.set_title('${:.2e}$'.format(num2tex(3.5e20)))

Disclaimer: I (very recently) created num2tex. It works well for my workflow and I am now trying to get feedback from others who might be interested in using it.



来源:https://stackoverflow.com/questions/17306755/how-can-i-format-a-float-using-matplotlibs-latex-formatter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!