我正在为数学课绘制一些图表,并且我无法在情节图例中获得和平定义的间距。我目前正在使用
\,
对于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()
结果如下
如何有效地格式化这种方式,无论左边的像素大小如何都能始终有效?
答案 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$}"
不可否认,这并不完美,但结合多个\makebox
和填充,你可以微调你需要的东西。理想情况下,您可以编写一个自定义图例处理程序,它“知道”TeX的多行块,但我确信这不是一件容易的事。