Python matplotlib无法正确渲染latex矩阵B矩阵(很可能未正确转义)

Python matplotlib无法正确渲染latex矩阵B矩阵(很可能未正确转义),python,matplotlib,latex,Python,Matplotlib,Latex,我一直在拍摄numpy数组,将它们转换为LaTeX方程,然后尝试使用matplotlib将它们保存为图像 我对matplotlib和LaTeX都缺乏经验 假设matplotlib工作正常,下面是一段相关的代码: # Imports import matplotlib.mathtext as mathtext import matplotlib.pyplot as plt import matplotlib # Setup matplotlib.rc('image', origin='upper

我一直在拍摄numpy数组,将它们转换为LaTeX方程,然后尝试使用matplotlib将它们保存为图像

我对matplotlib和LaTeX都缺乏经验

假设matplotlib工作正常,下面是一段相关的代码:

# Imports
import matplotlib.mathtext as mathtext
import matplotlib.pyplot as plt
import matplotlib

# Setup
matplotlib.rc('image', origin='upper')
matplotlib.rcParams['text.usetex'] = True

# Rendering and saving.
parser = mathtext.MathTextParser("Bitmap")
parser.to_png('test1.png',r'\begin{bmatrix}  12 & 5 & 2\\  20 & 4 & 8\\  2 & 4 & 3\\  7 & 1 & 10\\\end{bmatrix}', fontsize=12, dpi=100)
预期产出:

实际产量:

生成包含文本的png(因此实际上不是LaTeX矩阵): \开始{bmatrix}12&5&2\20&4&8\2&4&3\7&1&10\\结束{bmatrix}

编辑:
它很可能没有正确地逃逸LaTeX表达式,任何指针都会有很大帮助。

您应该尝试添加这一行,因为
bmatrix
需要包:

mpl.rcParams['text.latex.preamble']=r'\usepackage{{amsmath}

这是我唯一能让它工作的方法:

将matplotlib导入为mpl
将matplotlib.pyplot作为plt导入
将matplotlib.mathtext作为mathtext导入
mpl.rcParams['font.size']=12
mpl.rcParams['text.usetex']=True
mpl.rcParams['text.latex.preamble']=r'\usepackage{{{amsmath}'
my_matrix=r'$\begin{bmatrix}12&5&2\\20&4&8\\2&4&3\\7&1&10\end{bmatrix}$'
plt.text(0,1,我的矩阵)
图=plt.gca()
图轴轴轴(“关闭”)
plt.savefig('test1.png',dpi=100)
但它会返回如下图像:

您可以设置
transparent=True
,但必须裁剪图像才能获得矩阵


您还可以添加:

mpl.rcParams['figure.figsize']=[1,1]
并更改此行:

plt.text(0,0.5,我的矩阵)
这样你就可以:


不使用
amsmath
软件包的解决方案(灵感来自:

将matplotlib导入为mpl
将matplotlib.pyplot作为plt导入
将matplotlib.mathtext作为mathtext导入
mpl.rcParams['font.size']=12
mpl.rcParams['text.usetex']=True
mpl.rcParams['figure.figsize']=[1,1]
my_matrix=r'$$\left[\matrix{12&5&2\cr 20&4&8\cr 2&4&3\cr 7&1&10\cr}\right]$'
plt.text(-0.1,0.5,我的矩阵)
图=plt.gca()
图轴轴轴(“关闭”)
plt.savefig('test1.png',dpi=100)

它不起作用,请记住我没有安装latex。类似的东西确实起作用:parser.to_png('test3.png',r'$\left[\left\lfloor\frac{5}{\frac{left(3\right)}{4}y\right)\right]$,color='green',fontsize 12,dpi=100)并正确渲染。@Arslan更新了答案。你太神奇了:D我现在只需要LaTeX依赖项。我只是好奇,如果没有LaTeX依赖项,我是否可以通过使用matplotlibs自己的TeX解析器实现类似的功能?