如何在Mayavi中使用LaTeX数学符号为轴标签?

9 投票
5 回答
4195 浏览
提问于 2025-04-17 02:20

我在一个Python脚本中导入mayavi库,想用它来显示一些3D数据集,但发现下面这种简单的方式来给坐标轴标记名字并不好使。

from mayavi import mlab
axes =mlab.axes(xlabel='$\alpha$', ylabel='$\beta$', zlabel='$\sigma$')

有没有什么好主意?我在谷歌和用户手册里都找不到解决办法。

5 个回答

1

这个讨论有点旧了,但问题还是没有解决。对于那些仍然想在mayavi中使用Latex文本的人,可以看看这个网站:

https://pgi-jcns.fz-juelich.de/portal/pages/latex-mayavi.html

在这里,有一个解决方法,介绍了如何将一个Latex文档转换成png文件,然后再导入到mayavi中。祝你好运!

2

我写了一个叫 mlabtex 的工具包,用来让 mayavi 支持 latex 格式的文本:https://github.com/MuellerSeb/mlabtex

这个工具包会用 matplotlib 生成一张图片,然后把这张图片当作纹理应用到 mlab.surf 上。它的使用方式和 mlab.text3d 很相似。

有了这个,你可以做到这样的效果:

import os
os.environ['QT_API'] = 'pyqt'
os.environ['ETS_TOOLKIT'] = 'qt4'
from mayavi import mlab
from mlabtex import mlabtex

TEXT = (r'Sebastian M\"uller, ' +
        r'$f(x)=\displaystyle\sum_{n=0}^\infty ' +
        r'f^{(n)}(x_0)\cdot\frac{(x-x_0)^n}{n!}$')

tex = mlabtex(0., 0., 0.,
              TEXT,
              color=(0., 0., 0.),
              orientation=(30., 0., 0.),
              dpi=1200)
mlab.axes()
mlab.show()

Latex in Mayavi 现在,你可以手动在坐标轴上放置文本标签。

祝你好运!

5

很遗憾,Mayavi不支持LaTeX符号。

撰写回答