Matplotlib图例标签与LaTeX数学的垂直对齐
问题内容:
当将带有下标的标签与没有下标的标签混合在一起时,它们在图例中无法垂直对齐。由于matplotlib基于打印字符在内部确定边界框,因此使用vphantom
字符无法对齐这些图例标签,并且我也没有运气用来更改标签的垂直对齐方式set_va
。
以下是MWE,它说明了我要解决的问题。我希望标签尽可能与文本基线对齐,否则与文本顶部对齐。
import numpy as np
import matplotlib as mpl
mpl.rcParams['text.usetex'] = True
import matplotlib.pyplot as plt
x = np.arange(10)
plt.plot(x, np.random.uniform(size=(10,)), c='red', label=r'test')
plt.scatter(x, np.random.uniform(size=(10,)), c='blue', label=r'test${}_{xy}$')
plt.legend(ncol=2)
plt.show()
问题答案:
将text.latex.preview
参数设置为True
:
import numpy as np
import matplotlib as mpl
mpl.rcParams['text.usetex'] = True
mpl.rcParams['text.latex.preview'] = True
import matplotlib.pyplot as plt
x = np.arange(10)
plt.plot(x, np.random.uniform(size=(10,)), c='red', label=r'test')
plt.scatter(x, np.random.uniform(size=(10,)), c='blue', label=r'test${}_{xy}$')
plt.legend(ncol=2)
plt.show()
有关自preview
变量的效果,也请参考此示例。