Автор оригинала: 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()
Поворот меток по оси 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 градусов против часовой стрелки:
Примечание: Эта функция, как и все остальные здесь, должна быть вызвана после | 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-тиков. Это происходит потому, что метки заполняются после построения графика, в противном случае они будут возвращать пустые текстовые значения.
В качестве альтернативы мы могли бы повторить 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()
Это также приводит к:
И, наконец, вы можете использовать функцию 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()
Это также приводит к:
Поворот меток по оси 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 градусов:
Теперь давайте работать непосредственно с объектом 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()
перед этим вызовом, чтобы заставить его работать правильно.
Теперь давайте переберем список 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()
Это также приводит к:
И, наконец, вы можете использовать функцию 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()
Это также приводит к:
Поверните даты, чтобы они поместились в 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, включая конкретный способ форматирования и подгонки дат .
Если вы заинтересованы в визуализации данных и не знаете, с чего начать, обязательно ознакомьтесь с нашей книгой .
Визуализация данных в Python , книга для начинающих и промежуточных разработчиков Python, проведет вас через простые манипуляции с данными с Пандами, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет вам, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair.