我想将方程式渲染为PNG文件,并将它们嵌入到我的库的HTML文档中.我已经在其他项目中使用了pylab(matplotlib).
我没有在http://matplotlib.sourceforge.net/users/usetex.html和http://matplotlib.sourceforge.net/users/mathtext.html找到任何线索.
当我做
plt.title(r'$\alpha > \beta$')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我得到一个带有轴的标题空图.
更新:
经过一些研究后我发现,将LaTeX渲染到png的最简单方法是使用mathext(http://code.google.com/p/mathtex/).
令人惊讶的是,我已经将所有需要的库从源代码中构建出来.
无论如何,感谢大家的回复.
更新2:
我做了一些mathtex的测试,发现它不支持矩阵(\ begin {pmatrix})和其他一些我需要的东西.所以,我要安装LaTex(MikTeX).
更新3:
我安装了proTeXt.这是巨大的,但易于使用和快速.恕我直言,现在它是渲染方程的唯一方法.
这对我有用:
# https://gist.github.com/tonyseek/95c90638cf43a87e723b
from cStringIO import StringIO
import matplotlib.pyplot as plt
def render_latex(formula, fontsize=12, dpi=300, format_='svg'):
"""Renders LaTeX formula into image.
"""
fig = plt.figure(figsize=(0.01, 0.01))
fig.text(0, 0, u'${}$'.format(formula), fontsize=fontsize)
buffer_ = StringIO()
fig.savefig(buffer_, dpi=dpi, transparent=True, format=format_, bbox_inches='tight', pad_inches=0.0)
plt.close(fig)
return buffer_.getvalue()
if __name__ == '__main__':
image_bytes = render_latex(
r'\theta=\theta+C(1+\theta-\beta)\sqrt{1-\theta}succ_mul',
fontsize=10, dpi=200, format_='png')
with open('formula.png', 'wb') as image_file:
image_file.write(image_bytes)
Run Code Online (Sandbox Code Playgroud)
(源) 如果您使用 IPython 解释器,它默认将所有单个 matplotlib 步骤渲染到图形窗口中。
因此,plt.title(r'$\alpha > \beta$')在 IPython 中,即使在调用 .show() 之前也会立即创建一个图形。另一方面,使用terminal/cmd/IDLE 则不会。
plt.show()无论您是否使用 IPython,都会创建一个图形窗口,您需要将该行更改为:
plt.savefig('filename.png')
Run Code Online (Sandbox Code Playgroud)编辑:好吧,我误解了你的问题。正如 @Li-aung Yip 所说,您可能想使用 Sympy 来获得纯方程图像。我们仍然可以在 matplotlib 中做一些技巧来实现你想要的(你可能需要相应地重新调整或调整大小):
import matplotlib.pyplot as plt
#add text
plt.text(0.01, 0.8, r'$\alpha > \beta$',fontsize=50)
#hide axes
fig = plt.gca()
fig.axes.get_xaxis().set_visible(False)
fig.axes.get_yaxis().set_visible(False)
plt.draw() #or savefig
Run Code Online (Sandbox Code Playgroud)
这是通过隐藏轴刻度并在绘图内添加文本来完成的。
但是...这并不是真正“不绘制”图形:\ 尽管您可以进行后期处理,例如使用 PIL 裁剪图像。
| 归档时间: |
|
| 查看次数: |
4447 次 |
| 最近记录: |