如何在Matplotlib注释中显示矩阵

时间:2014-10-12 19:37:32

标签: matplotlib

我正在尝试使用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

1 个答案:

答案 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)