Как повернуть ось X Текст наклейки в Matplotlib

Jinku Hu 30 Январь 2023 18 Апрель 2020
  1. plt.xticks(поворот = ) для поворота текста метки Xticks
  2. fig.autofmt_xdate(rotation= ) для поворота текста метки Xticks
  3. ax.set_xticklabels(xlabels, поворот = ) для поворота текста метки Xticks
  4. plt.setp(ax.get_xticklabels(), Rotation=) для поворота текста метки Xticks
  5. ax.tick_params(axis='x', Labelrotation= ) для поворота текста метки Xticks
  6. Вращательное выравнивание xticklabels
Как повернуть ось X Текст наклейки в Matplotlib

В этой обучающей статье мы познакомим вас с различными методами поворота текста этикетки по оси X в этикетке Python. Это включает в себя,

  • plt.xticks(rotation= )
  • fig.autofmt_xdate(rotation= )
  • ax.set_xticklabels(xlabels, rotation= )
  • plt.setp(ax.get_xticklabels(), rotation=)
  • ax.tick_params(axis='x', labelrotation= )

Ориентация текста тиковых меток по умолчанию по оси x - горизонтальная или 0 градусов. Это приводит к неудобствам, если текст метки слишком длинный, например, перекрытие между соседними текстами метки.

Matplotlib поворачивает тиковую метку по оси x без поворота

Коды для создания вышеуказанного рисунка,

from matplotlib import pyplot as plt
from datetime import datetime, timedelta

values = range(10)
dates = [datetime.now()-timedelta(days=_) for _ in range(10)]

fig,ax = plt.subplots()
plt.plot(dates, values)
plt.grid(True)

plt.show()

plt.xticks(поворот = ) для поворота текста метки Xticks

from matplotlib import pyplot as plt
from datetime import datetime, timedelta

values = range(10)
dates = [datetime.now()-timedelta(days=_) for _ in range(10)]

fig,ax = plt.subplots()
plt.plot(dates, values)
plt.xticks(rotation=45)
plt.grid(True)

plt.show()
plt.xticks(rotation=45)

plt.xticks получает или задает свойства расположения галочек и меток оси x.

rotation - это угол поворота против часовой стрелки текста этикетки оси х.

Matplotlib вращает тик label_xticks по оси x

fig.autofmt_xdate(rotation= ) для поворота текста метки Xticks

from matplotlib import pyplot as plt
from datetime import datetime, timedelta

values = range(10)
dates = [datetime.now()-timedelta(days=_) for _ in range(10)]

fig,ax = plt.subplots()
plt.plot(dates, values)
fig.autofmt_xdate(rotation=45)
plt.grid(True)

plt.show()

autofmt_xdate вращает тиковые метки и выравнивает их вправо автоматически, если метка является объектом date.

Но на самом деле это работает не только с объектом date, но и с обычной текстовой строкой метки.

from matplotlib import pyplot as plt
from datetime import datetime, timedelta

values = range(10)
dates = [datetime.now()-timedelta(days=_) for _ in range(10)]
xlabels = ["Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"]

fig,ax = plt.subplots()
plt.plot(dates, values)
ax.set_xticklabels(xlabels)
fig.autofmt_xdate(rotation=45)
plt.grid(True)

plt.show()

Matplotlib вращает тиковую метку label_autofmt_xdate по оси x

ax.set_xticklabels(xlabels, поворот = ) для поворота текста метки Xticks

set_xticklabels устанавливает метки x-тиска со списком строковых меток.

Этот список меток строк может быть новым указанным списком или существующим в текущем графике списком меток, считанным get_xticklabels().

from matplotlib import pyplot as plt
from datetime import datetime, timedelta

values = range(10)
dates = [datetime.now()-timedelta(days=_) for _ in range(10)]
xlabels = [datetime.strftime(datetime.now()-timedelta(days=_), "%m/%d/%Y") for _ in range(10)]

fig,ax = plt.subplots()
plt.plot(dates, values)
ax.set_xticklabels(xlabels, rotation=45, ha='right')
plt.grid(True)

plt.show()

Matplotlib вращает x-осевой тик label_set_xticklabels

plt.setp(ax.get_xticklabels(), Rotation=) для поворота текста метки Xticks

matplotlib.pyplot.setp устанавливает свойство на объект художника.

plt.setp(ax.get_xticklabels(), rotation=) устанавливает свойство rotation объекта xtick labelels.

from matplotlib import pyplot as plt
from datetime import datetime, timedelta

values = range(10)
dates = [datetime.now()-timedelta(days=_) for _ in range(10)]
xlabels = [datetime.strftime(datetime.now()-timedelta(days=_), "%m/%d/%Y") for _ in range(10)]

fig,ax = plt.subplots()
plt.plot(dates, values)
plt.setp(ax.get_xticklabels(), rotation=45, ha='right')
plt.grid(True)

plt.tight_layout()

plt.show()

ax.tick_params(axis='x', Labelrotation= ) для поворота текста метки Xticks

tick_params устанавливает параметры тиков, тиковых меток и линий сетки.

ax.tick_params(axis='x', labelrotation= ) устанавливает свойство labelrotation тиковой метки по оси x, или, другими словами, по оси X.

from matplotlib import pyplot as plt
from datetime import datetime, timedelta

values = range(10)
dates = [datetime.now()-timedelta(days=_) for _ in range(10)]
xlabels = [datetime.strftime(datetime.now()-timedelta(days=_), "%m/%d/%Y") for _ in range(10)]

fig,ax = plt.subplots()
plt.plot(dates, values)

ax.tick_params(axis='x', labelrotation=45)
plt.grid(True)

plt.show()

Вращательное выравнивание xticklabels

в приведенном выше примере мы используем аргумент ha='right', что означает horizontal alignment is right.

ha='right' выравнивает правый конец текста этикетки к тикам.

ha='left' выравнивает левый конец текста этикетки по тикам.

ha='center' выравнивает центр текста этикетки по клещам.

from matplotlib import pyplot as plt
from datetime import datetime, timedelta

xvalues = range(5)
yvalues = xvalues
xlabels = [datetime.strftime(datetime.now()-timedelta(days=_), "%m/%d/%Y") for _ in xvalues]

alignment = ["right", "left", "center"]
fig,axes = plt.subplots(1, 3)


for n, ax in enumerate(axes):
    ax.plot(xvalues, yvalues)
    ax.set_title(alignment[n] + "alignment")
    ax.set_xticks(xvalues)
    ax.set_xticklabels(xlabels, rotation=45, ha=alignment[n])
    ax.grid(True)

plt.show()

Matplotlib поворачивает x-ось выравнивает метку label_ha

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

Сопутствующая статья - Matplotlib Axes

Сопутствующая статья - Matplotlib Ticks