python matplotlib极坐标图x轴标签位置

时间:2014-02-14 12:58:43

标签: python charts matplotlib axis-labels placement

我正在使用(可能会滥用?)Polar图表来表示我拥有的一些数据。我想让目前位于x轴正上方的标签位于数据段之上。就在轴之间。

我发现了很多关于如何旋转所有内容的文章,但它始终将标签保持在轴的正上方。

我对轴的代码安静(如果你需要整个定义/代码,请说出来):

# Set axis names and orientation
ax.set_theta_zero_location("N")
ax.set_xticklabels(['Seg 1', 'Seg 2', 'Seg 3', 'Seg 4', 'Seg 5', 'Seg 6', 'Seg 7', 'Seg 8'])
ax.set_ylim((0, 10.0))
ax.set_rgrids([5,10], angle=22)

它产生的当前图像:

enter image description here

现在我希望标签'Seg 1''Seg 2'等在轴之间从轴向右移动。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:2)

你可以通过在次要刻度上设置标签来做到这一点,但是然后将次要刻度宽度设置为零,这样你就看不到它们了:

import matplotlib.ticker as ticker

# Set the major and minor tick locations
ax.xaxis.set_major_locator(ticker.MultipleLocator(np.pi/4))
ax.xaxis.set_minor_locator(ticker.MultipleLocator(np.pi/8))

# Turn off major tick labels
ax.xaxis.set_major_formatter(ticker.NullFormatter())

# Set the minor tick width to 0 so you don't see them
for tick in ax.xaxis.get_minor_ticks():
    tick.tick1line.set_markersize(0)
    tick.tick2line.set_markersize(0)
    tick.label1.set_horizontalalignment('center')

# Set the names of your ticks, with blank spaces for the major ticks
ax.set_xticklabels(['','','Seg 1','','Seg 2','','Seg 3','','Seg 4','','Seg 5','','Seg 6','','Seg 7','','Seg 8'],minor=True)