在matplotlib中定位对数极坐标轴标签

时间:2017-03-20 20:10:36

标签: matplotlib latex

我无法在此图中定位轴标签。我喜欢定位顶部标签,以便管道与网格对齐,以及右侧和左侧标签,以便它们不会触及绘图。

我试过

    ax.tick_params(axis='both', which='both', pad=15)

但没有效果。另外,

rcParams

似乎与情节的对数尺度相冲突。作为一个黑客,我尝试了空格,但是在每个单词的开头和结尾都删除了LaTeX。最后,我尝试了不可见的Unicode标志,但只是让matplotlib崩溃了。

非常感谢您的帮助!

log-polar plot enter image description here

import numpy
from matplotlib import pyplot as plt
ax = plt.subplot(111, polar=True)
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
ax.set_xticks(numpy.linspace(0, 2 * 3.14, 4, endpoint=False))
ax.set_theta_direction(-1)
ax.set_theta_offset(3.14 / 2.0)
plt.ylim(0, 2.5)
ax.set_xticklabels([
    r'$100,000\,{\rm yr}|10\,{\rm yr}$',
    r'$100\,{\rm yr}$',
    r'$1000\,{\rm yr}$',
    r'$10,000\,{\rm yr}$'],
    fontsize=16)
plt.show()

1 个答案:

答案 0 :(得分:0)

技巧可以是根据文本标签的位置不同地对齐文本标签。也就是说,左侧标签应对齐,右侧标签左侧。

对于顶部标签,将其拆分是有意义的,这样第一个标签左对齐,最后一个标签右对齐。

import numpy as np
from matplotlib import pyplot as plt

ax = plt.subplot(111, polar=True)
ticks = np.linspace(0, 2 * np.pi, 5, endpoint=True)
ax.set_xticks(ticks)
ax.set_theta_direction(-1)
ax.set_theta_offset(3.14 / 2.0)
plt.ylim(0, 2.5)
ax.set_xticklabels([
    r'$10\,{\rm yr}$',
    r'$100\,{\rm yr}$',
    r'$1000\,{\rm yr}$',
    r'$10,000\,{\rm yr}$', r"$100,000\,{\rm yr}|$"],
    fontsize=16)

aligns = ["left", "left", "center", "right", "right"]
for tick, align in zip(ax.get_xticklabels(), aligns):
    tick.set_ha(align)

plt.show()

enter image description here