我正在尝试使用Matplotlib-Plot的注释绘制矩阵。这甚至可能吗?
尝试了最基本的例子,这一切都打破了情节:
ax.annotate(r"$ \begin{matrix} a & b & c \\
d & e & f \\
g & h & i \end{matrix} $", (0.25, 0.25),
textcoords='axes fraction', size=20)
部分问题是我缺少“texlive-latex-extra”,其中包含“type1cm”,这是正确渲染它所需要的。另见:Python: Unable to Render Tex in Matplotlib
答案 0 :(得分:4)
MatPlotLib使用自己的排版框架(MathText)。您的系统的LaTeX渲染可以通过rcParams['text.usetex'] = True
启用。
你遇到的另一个问题是双引号多行字符串。如果不使用\
,则不允许这样做,而现有的\\
很难管理。
试试这个:
from matplotlib import rcParams
rcParams['text.usetex'] = True
ax.annotate(
r"$ \begin{array}{ccc} a & b & c \\ d & e & f \\ g & h & i \end{array} $",
(0.25, 0.25),
textcoords='axes fraction', size=20)
这里我使用的是array
环境,而不是matrix
,因为我认为后者不是内置的LaTeX。如果你真的想要matrix
- 或其他amsmath项 - 你可以将amsmath包添加到MatPlotLib LaTeX前言:
rcParams['text.latex.preamble'] = r'\usepackage{amsmath}'
然后matrix
环境将起作用,
ax.annotate(
r"$ \begin{matrix} a & b & c \\ d & e & f \\ g & h & i \end{matrix} $",
(0.25, 0.25),
textcoords='axes fraction', size=20)