Проверьте ось x на рисунке ниже. Как я могу сдвинуть метки немного влево, чтобы они совпадали с соответствующими отметками?
Я поворачиваю этикетки, используя:
ax.set_xticks(xlabels_positions)
ax.set_xticklabels(xlabels, rotation=45)
Но, как вы можете видеть, вращение происходит по центру текстовых меток. Из-за этого кажется, что они смещены вправо.
Вместо этого я пробовал использовать это:
ax.set_xticklabels(xlabels, rotation=45, rotation_mode="anchor")
... но это не то, что я хотел. И, "anchor"
похоже, это единственное допустимое значение rotation_mode
параметра.
matplotlib
Филипе Коррейя
источник
источник
xlabels = ax.get_xticklabels()
если хотите использовать существующие метки.Вращение этикеток, безусловно, возможно. Обратите внимание, что это снижает удобочитаемость текста. Одна альтернатива - чередовать позиции меток с помощью такого кода:
import numpy as np n=5 x = np.arange(n) y = np.sin(np.linspace(-3,3,n)) xlabels = ['Long ticklabel %i' % i for i in range(n)] fig, ax = plt.subplots() ax.plot(x,y, 'o-') ax.set_xticks(x) labels = ax.set_xticklabels(xlabels) for i, label in enumerate(labels): label.set_y(label.get_position()[1] - (i % 2) * 0.075)
Дополнительные сведения и альтернативы см. В этом посте в моем блоге.
источник
Простая альтернатива без цикла - использовать
horizontalalignment
свойство Text в качестве аргумента ключевого слова дляxticks
[1]. Ниже, в строке с комментариями, я заставилxticks
выравнивание быть «правильным».n=5 x = np.arange(n) y = np.sin(np.linspace(-3,3,n)) xlabels = ['Long ticklabel %i' % i for i in range(n)] fig, ax = plt.subplots() ax.plot(x,y, 'o-') plt.xticks( [0,1,2,3,4], ["this label extends way past the figure's left boundary", "bad motorfinger", "green", "in the age of octopus diplomacy", "x"], rotation=45, horizontalalignment="right") # here plt.show()
(
yticks
по умолчанию уже выравнивает правый край с галочкой, но поxticks
умолчанию отображается «по центру».)[1] Вы найдете это в документации xticks, если будете искать фразу «Свойства текста».
источник
Если вы не хотите изменять метки xtick, вы можете просто использовать:
plt.xticks(rotation=45)
источник
plt.xticks(rotation=45,ha='right')