我有一个带有LaTeX ticklabels的简单Matplotlib图。我希望这些是中心对齐的,所以它们看起来都很均匀,但即使va='center'
它们看起来也在不同的垂直位置:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
# Some Matplotlib settings so the font is consistent
mpl.rc('font', **{'family': 'serif', 'serif': ['Computer Modern'],
'size': 20})
mpl.rc('text', usetex=True)
theta = np.linspace(-np.pi, np.pi, 100)
fig, ax = plt.subplots()
ax.plot(theta, np.cos(theta))
ax.set_xticks(np.linspace(-np.pi, np.pi, 5))
ax.set_xticklabels((r'$-\pi$', r'$-\pi/2$', '0',
r'$\pi/2$', r'$\pi$'), va='center')
ax.tick_params(axis='x', which='major', pad=20)
plt.show()
我可以做些什么来按照我想要的方式对齐xticklabels?
答案 0 :(得分:0)
尝试使用对齐关键字va='baseline'
进行垂直对齐。这会使基线上的文本对齐,这意味着所有字母的底线都没有下行。从理论上讲,所有π都应该很好地排列。
ax.set_xticklabels((r'$-\pi$', r'$-\pi/2$', '0',
r'$\pi/2$', r'$\pi$'), va='baseline')
这改善了我的情节,即使标签仍然没有完美对齐。可以找到更多信息here。
不幸的是,这对我不起作用。 [...]我怀疑这是一个后端问题。 - xnx
标签的位置随使用的后端而变化。下面是svg,png和pdf后端生成的输出之间的比较,全部使用baseline关键字。请注意,pdf和svg标签几乎完美排列,因此pdf标签不清晰可见。
因此,对于交互式查看器之外的所有目的,使用pdf或svg后端看起来不错。当使用png后端时,标签遍布整个地方。