python matplolib полярная диаграмма положение оси x

Я использую (может быть, неправильно) полярную диаграмму для представления некоторых данных, которые у меня есть. Я хотел бы, чтобы метки, в настоящее время расположенные прямо над осью 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)

Текущее изображение, которое оно производит:

Теперь я хотел бы этикетки 'Seg 1', 'Seg 2'и т. д. для перемещения от оси вправо между осью.

Есть ли способ сделать это?

1 ответ

Решение

Вы можете сделать это, установив метки на второстепенных тиках, но затем установив ширину минорных тиков в ноль, чтобы вы их не видели:

импортировать matplotlib.ticker как тикер

# Установите основные и второстепенные места для галочек
ax.xaxis.set_major_locator (ticker.MultipleLocator (np.pi / 4))
ax.xaxis.set_minor_locator (ticker.MultipleLocator (np.pi / 8))

# Отключить основные метки
ax.xaxis.set_major_formatter (ticker.NullFormatter ())

# Установите ширину вспомогательного тика на 0, чтобы вы не видели их
для галочки в ax.xaxis.get_minor_ticks():
    tick.tick1line.set_markersize(0)
    tick.tick2line.set_markersize(0)
    tick.label1.set_horizontalalignment('центр')

# Установите названия ваших тиков, с пробелами для основных тиков
ax.set_xticklabels(['','','Seg 1','','Seg 2','','Seg 3','','Seg 4','','Seg 5','','Seg 6','', Seg 7','', Seg 8'],minor=True)
Другие вопросы по тегам