与Matplotlib和TeX的均匀间距

cep*_*tno 4 python matplotlib tex

我正在为数学课绘制一些图表,我无法在情节图例中得到和平定义的间距.我目前正在使用

\,
Run Code Online (Sandbox Code Playgroud)

在TeX的一个空间,但碰到的情况是一个稍微更远了比其它可能是由于等式的左边多少占用.这是我的代码

import matplotlib.pyplot as plt
import numpy as np
import math as math

# 0-1
x = np.linspace(0, 1)
y = np.power(x, 2)
plt.plot(x, y, label=r"$t^2 \,\,\,\,\,\, 0 \leq t \leq 1$")

#1-2
x = [1,2]
y = [1,1]
plt.plot(x, y, label=r"$1 \,\,\,\,\,\,\, 1 < t \leq 2$")

#2-3
x = np.linspace(2, 3)
y = 3-x
plt.plot(x, y, label=r"$3 - t \,\,\,\, 2 < t \leq 3$")


plt.grid()
plt.axis([0,3,0,1.5])
plt.legend(loc='upper right')
plt.show()
Run Code Online (Sandbox Code Playgroud)

这是结果

如何有效地格式化这种方式,无论左边的像素大小如何都能始终有效?

Hoo*_*ked 5

通过访问较低级别的LaTeX,您当然可以改善间距.首先,在你的情节的顶部运行:

from matplotlib import rc
rc('text', usetex=True)
Run Code Online (Sandbox Code Playgroud)

使用的组合\makebox,并\hfill可以垫出了两个部分之间的空间:

label=r"\makebox[4cm]{$t^2$ \hfill $0 \leq t \leq 1$}"
label=r"\makebox[4cm]{$1$ \hfill $1 < t \leq 2$}"
label=r"\makebox[4cm]{$3 - t$ \hfill $2 < t \leq 3$}"
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

不可否认,这并不完美,但通过多次\makebox和填充的组合,您可以微调您需要的东西.理想情况下,您可以编写一个自定义图例处理程序,它"知道"TeX的多行块,但我确信这不是一件容易的事.