与Matplotlib和TeX的均匀间距

时间:2013-05-29 01:02:59

标签: python matplotlib tex

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

\,

对于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()

结果如下

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

1 个答案:

答案 0 :(得分:5)

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

from matplotlib import rc
rc('text', usetex=True)

使用\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$}"

enter image description here

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