Линейные диаграммы Matplotlib – Всё, что вам нужно знать

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

Содержание

Загружаем наши данные

Давайте начнем с загрузки наших библиотек и некоторых образцов данных. Мы используем временные ряды данных, которые охватывают температуру в течение года в Торонто, Канада.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('https://github.com/datagy/mediumdata/raw/master/toronto-weather.xlsx', parse_dates=['LOCAL_DATE'])

print(df.head())

Печать первых пяти строк возвращает следующее:

          STATION_NAME LOCAL_DATE  MEAN_TEMPERATURE  MIN_TEMPERATURE  MAX_TEMPERATURE
0  TORONTO CITY CENTRE 2020-01-01               0.5             -0.8              1.7
1  TORONTO CITY CENTRE 2020-01-02               3.3              1.6              4.9
2  TORONTO CITY CENTRE 2020-01-03               5.1              3.0              7.2
3  TORONTO CITY CENTRE 2020-01-04               2.1              0.3              3.9
4  TORONTO CITY CENTRE 2020-01-05               0.4             -0.9              1.7

Если вы работаете в Jupyter notebooks и хотите отображать эти графики встроенными, добавьте следующий магический код Jupyter к вашему оператору импорта:

%matplotlib inline

Как создать линейные диаграммы Matplotlib?

Matplotlib позволяет очень легко добавить простой линейный график, используя метод .plot() библиотеки pyplot. Давайте посмотрим, как это сделать, используя данные MEAN_TEMPERATURE.

plt.plot(df['LOCAL_DATE'], df['MEAN_TEMPERATURE'])
plt.show()

Мы назначили переменную LOCAL_DATE по оси x и переменную MEAN_TEMPERATURE по значениям y.

Как видно ниже, Matplotlib автоматически сгруппировал метки оси x по месяцам:

Как добавить заголовки и метки осей в линейные диаграммы Matplotlib?

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

Мы можем пойти дальше и добавить размеры шрифта к этим меткам:

plt.plot(df['LOCAL_DATE'], df['MEAN_TEMPERATURE'])
plt.title('Toronto Temperature in 2020')
plt.xlabel('Date')
plt.ylabel('Mean Temperature')
plt.show()

Этот код возвращает следующий график:

Чтобы изменить размер шрифта, добавьте параметр fontsize= к каждому заголовку и атрибуту метки:

plt.plot(df['LOCAL_DATE'], df['MEAN_TEMPERATURE'])
plt.title('Toronto Temperature in 2020', fontsize=18)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Mean Temperature', fontsize=12)
plt.show()

Это возвращает следующую диаграмму:

Проверьте другие руководства по Python на datagy, включая наш полный гид по стилям Pandas и всеобъемлющий обзор сводных таблиц в Pandas

Как настроить линии с цветами и точками данных?

Matplotlib позволяет легко настраивать линии с помощью цветов, а также данных точек. Давайте посмотрим, как можно изменить цвет линии на серый и добавить метки данных к каждой точке:

plt.plot(df['LOCAL_DATE'], df['MEAN_TEMPERATURE'], color='grey', marker='o')
plt.title('Toronto Temperature in 2020', fontsize=18)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Mean Temperature', fontsize=12)
plt.show()

Это выводит следующее:

Вы можете найти другие доступные стили маркеров в основной документации здесь

Как добавить линии сетки на линейные диаграммы?

Наш график все еще может быть немного трудночитаемым. Давайте добавим к графику линии сетки, чтобы легче было определять позиции. Это можно сделать, передав аргумент plt.grid(True). Вот как это делается:

plt.plot(df['LOCAL_DATE'], df['MEAN_TEMPERATURE'], color='grey', marker='o')
plt.title('Toronto Temperature in 2020', fontsize=18)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Mean Temperature', fontsize=12)
plt.grid(True)
plt.show()

Это возвращает следующую диаграмму:

Matplotlib line charts gridlines

Как добавить несколько строк в линейные диаграммы Matplotlib?

Давайте посмотрим, как добавить несколько линий к этим графикам. Это можно сделать, просто добавив новый график в код.

Давайте попробуем это, установив минимальную температуру и изменив цвет на синий:

plt.plot(df['LOCAL_DATE'], df['MEAN_TEMPERATURE'], color='grey')
plt.plot(df['LOCAL_DATE'], df['MIN_TEMPERATURE'], color='blue')
plt.title('Toronto Temperature in 2020', fontsize=18)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Temperature', fontsize=12)
plt.grid(True)
plt.show()

Эта таблица возвращает следующее:

Давайте пойдем дальше и добавим на график максимальную температуру, выделив ее красным цветом:

plt.plot(df['LOCAL_DATE'], df['MEAN_TEMPERATURE'], color='grey')
plt.plot(df['LOCAL_DATE'], df['MIN_TEMPERATURE'], color='blue')
plt.plot(df['LOCAL_DATE'], df['MAX_TEMPERATURE'], color='red')
plt.title('Toronto Temperature in 2020', fontsize=18)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Temperature', fontsize=12)
plt.grid(True)
plt.show()

Этот код возвращает следующий график:

Как добавить легенду к линейным диаграммам Matplotlib?

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

В Matplotlib можно это сделать, передавая метки для каждого элемента данных и устанавливая параметр .legend()

plt.plot(df['LOCAL_DATE'], df['MEAN_TEMPERATURE'], color='grey', label='Mean temp')
plt.plot(df['LOCAL_DATE'], df['MIN_TEMPERATURE'], color='blue', label='Min temp')
plt.plot(df['LOCAL_DATE'], df['MAX_TEMPERATURE'], color='red', label='Max temp')
plt.title('Toronto Temperature in 2020', fontsize=18)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Temperature', fontsize=12)
plt.legend()
plt.grid(True)
plt.show()

Это возвращает следующий график:

Как добавить стиль к диаграммам Matplotlib?

Наконец, давайте научимся стилизовать график, чтобы он выглядел… немного приятнее. Matplotlib предлагает несколько встроенных стилей, которые вы можете найти здесь

Давайте установим стиль ggplot

plt.style.use('ggplot')
plt.plot(df['LOCAL_DATE'], df['MEAN_TEMPERATURE'], color='grey', label='Mean temp')
plt.plot(df['LOCAL_DATE'], df['MIN_TEMPERATURE'], color='blue', label='Min temp')
plt.plot(df['LOCAL_DATE'], df['MAX_TEMPERATURE'], color='red', label='Max temp')
plt.title('Toronto Temperature in 2020', fontsize=18)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Temperature', fontsize=12)
plt.legend()
plt.grid(True)
plt.show()

Это возвращает следующую диаграмму:

Заключение

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

Last updated