Рубрики
Без рубрики

Поворот меток осей в Matplotlib

В этом уроке мы рассмотрим примеры того, как вращать текст оси или метки на графике Matplotlib. Мы будем работать на уровне фигур и на уровне осей, используя несколько методов.

Автор оригинала: David Landup.

Вступление

Matplotlib – одна из наиболее широко используемых библиотек визуализации данных в Python. Большая часть популярности Matplotlib связана с его настройками – вы можете настроить практически любой элемент из его иерархии объектов .

В этом уроке мы рассмотрим как вращать текст оси/метки в графике Matplotlib .

Создание сюжета

Давайте сначала создадим простой сюжет:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.show()
простой сюжет matplotlib

Поворот меток по оси X в Matplotlib

Теперь давайте посмотрим, как мы можем вращать метки по оси X здесь. Есть два способа сделать это – изменить его на уровне рисунка с помощью plt.xticks() или изменить его на уровне осей с помощью tick.set_rotation() индивидуально или даже с помощью ax.set_xticklabels() и ax.xtick_params() .

Давайте начнем с первого варианта:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.xticks(rotation = 45) # Rotates X-Axis Ticks by 45-degrees
plt.show()

Здесь мы установили вращение |/xticks на 45, что означает наклон на 45 градусов против часовой стрелки:

поверните этикетку по оси x с помощью палочек

Примечание: Эта функция, как и все остальные здесь, должна быть вызвана после | plt.plot () , чтобы тики не оказались потенциально обрезанными или неуместными.

Другой вариант-получить текущий объект Axes и вызвать на нем ax.set_xticklabels () . Здесь мы можем установить метки, а также их вращение:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)

ax = plt.gca()
plt.draw()

ax.set_xticklabels(ax.get_xticks(), rotation = 45)

plt.show()

Примечание: Чтобы этот подход работал, вам нужно будет вызвать plt.draw () | перед доступом или установкой меток X-тиков. Это происходит потому, что метки заполняются после построения графика, в противном случае они будут возвращать пустые текстовые значения.

поворот меток оси x с помощью xticklabels

В качестве альтернативы мы могли бы повторить tick s в списке ax.get_xticklabels () . Затем мы можем вызвать tick.set_rotation() на каждом из них:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)

ax = plt.gca()
plt.draw()

for tick in ax.get_xticklabels():
    tick.set_rotation(45)
plt.show()

Это также приводит к:

поворот меток оси x с помощью set_rotation

И, наконец, вы можете использовать функцию ax.tick_params() и установить там поворот метки:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)

ax = plt.gca()
ax.tick_params(axis='x', labelrotation = 45)
plt.show()

Это также приводит к:

поворот меток оси x с помощью tick_params

Поворот меток по оси Y в Matplotlib

Точно такие же шаги можно применить и к меткам по оси Y.

Во-первых, вы можете изменить его на уровне рисунка с помощью plt.yticks () или на метке Осей с помощью tick.set_rotation() или манипулируя ax.set_yticklabels() и ax.tick_params() .

Давайте начнем с первого варианта:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.yticks(rotation = 45)
plt.show()

Как и в прошлый раз, это устанавливает поворот yticks на 45 градусов:

поворот меток оси y yticks

Теперь давайте работать непосредственно с объектом Axes :

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)

ax = plt.gca()
plt.draw()

ax.set_yticklabels(ax.get_yticks(), rotation = 45)

plt.show()

То же самое замечание применимо и здесь, вы должны вызвать plt.draw() перед этим вызовом, чтобы заставить его работать правильно.

поворот меток оси y с помощью yticklabels

Теперь давайте переберем список tick s и set_rotation() на каждом из них:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)

ax = plt.gca()
plt.draw()

for tick in ax.get_yticklabels():
    tick.set_rotation(45)
plt.show()

Это также приводит к:

поворот меток оси y с помощью set_rotation

И, наконец, вы можете использовать функцию ax.tick_params() и установить там поворот метки:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)

ax = plt.gca()
ax.tick_params(axis='y', labelrotation = 45)
plt.show()

Это также приводит к:

поворот меток оси y с помощью tick_params

Поверните даты, чтобы они поместились в Matplotlib

Чаще всего люди вращают галочки на своих участках, потому что они содержат даты. Даты могут быть длинными, и даже с небольшим набором данных они начнут перекрываться и быстро станут нечитаемыми.

Конечно, вы можете вращать их, как мы делали раньше, обычно наклон на 45 градусов решит большинство проблем, в то время как наклон на 90 градусов освободит еще больше.

Хотя есть еще один вариант поворота и фиксации дат в Matplotlib, который даже проще, чем предыдущие методы – рис.autofmt__date() .

Эта функция может быть использована либо как fig.autofmt_xdata () , либо fix.autofmt_data() для двух разных осей.

Давайте посмотрим, как мы можем использовать его в наборе данных погоды Сиэтла :

import pandas as pd
import matplotlib.pyplot as plt

weather_data = pd.read_csv("seattleWeather.csv")

fig = plt.figure()
plt.plot(weather_data['DATE'], weather_data['PRCP'])
fig.autofmt_xdate()
plt.show()

Это приводит к:

автоматическое форматирование дат для размещения в matplotlib

Вывод

В этом уроке мы рассмотрели несколько способов поворота текста/меток оси на графике Matplotlib, включая конкретный способ форматирования и подгонки дат .

Если вы заинтересованы в визуализации данных и не знаете, с чего начать, обязательно ознакомьтесь с нашей книгой .

Визуализация данных в Python , книга для начинающих и промежуточных разработчиков Python, проведет вас через простые манипуляции с данными с Пандами, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет вам, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair.