Построение графиков через библиотеку Matplotlib

  • Автор записи:
  • Запись опубликована:18.08.2023
  • Рубрика записи:Python

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

Основные компоненты Matplotlib включают объекты Figure (фигура), Axes (оси) и Axis (ось). Фигура представляет собой контейнер, который содержит все элементы графика. Оси представляют собой прямоугольную область графика, в которой данные отображаются на основе координатных систем. Они включают метки, масштабы и другие элементы, такие как легенда и заголовок. Оси могут быть созданы внутри фигуры или рассчитаны автоматически. Оси состоят из объектов Axis, которые управляют отображением меток и масштабов на осях.

Matplotlib также интегрируется с множеством других библиотек Python, таких как NumPy и Pandas, что делает ее мощным инструментом для анализа данных и визуализации.

Создание линейного графика

Стандартной и основной функцией построения графиков в matplotlib является plt.plot() .Синтаксис построения линейного графика следующий:

matplotlib.pyplot.plot(x, y, scalex=True, scaley=True, data=None, **kwargs)

Пример кода, с помощью которого можно построить график:

# Импорт библиотеки
import matplotlib
import matplotlib.pyplot as plt
# Установка значений по оси X
x = np.arange(0, 8, 0.01)
# Установка значений по оси Y
y = [i**3 for i in x ]
# Создание графика
plt.plot(x, y)
#Установки сетки под графиком
plt.grid()
# Отображение графика
plt.show()

Список параметров функций setp() и plot()

ПараметрОписание
alphaСтепень прозрачности графика (значение от 0 до 1)
color или cЦвет линии
dash_capstyleСтиль штриховых конечных точек [‘butt’ | ’round’ | ‘projecting’]
dash_joinstyleСтиль штриховых соединительных точек [‘miter’ | ’round’ | ‘bevel’]
dataДанные графика в формате (x, y), где x, y – массивы numpy
linestyle или lsСтиль линии [ ‘-‘ | ‘–‘ | ‘-.’ | ‘:’ | ‘steps’ | …]
linewidth или lwТолщина линии (вещественное число)
markerМаркер точек
markeredgecolor или mecЦвет границ маркеров
markeredgewidth илиmewТолщина границы маркеров (вещественное число)
markerfacecolor или mfcЦвет заливки маркеров
markersize или msРазмер маркеров
solid_capstyleСтиль конечных точек непрерывной линии [‘butt’ | ’round’ | ‘projecting’]
solid_joinstyleСтиль соединительных точек непрерывной линии [‘miter’ | ’round’ | ‘bevel’]
visibleПоказать/скрыть график [True | False]
xdataЗначения для оси абсцисс (массив numpy)
ydataЗначения для оси ординат (массив numpy)

Изменение стиля линии

В случае, если третьим параметром в plot() указать строку с двумя дефисами, то вместо сплошной линии получим штриховую линию, этого же результата можно добиться, если передать plot() в переменную, а затем вызвать функцию setp().

plt.plot(x, y, '--')
# Или
lines = plt.plot(x, y, '--')
plt.setp(lines, linestyle='-.')

Все варианты типа лини:

Обозначение типа линииОписание
‘-‘Непрерывная линия (используется по умолчанию)
‘–‘Штриховая линия
‘-.’Штрихпунктирная линия
‘:’Пунктирная линия
‘None’ или ‘ ‘Без рисования линии

Изменение цвета линий графиков

Помимо типа линий у графиков можно менять еще и цвет. 

Цвет можно устанавливать также через plot() или setp() в виде букв, шестнадцатеричной записи или RGB (от 0 до 1).

plt.plot(x, y, 'b')
# Или
lines = plt.plot(x, y)
plt.setp(lines, color='#0000CC')
# Или
lines = plt.plot(x, y)
plt.setp(lines, color=(0,0,1))

Изменение маркеров точек у графиков

Также можно поменять тип маркеров у точек

lines = plt.plot(x, y)
plt.setp(lines, linestyle='-.', marker='s', markerfacecolor='w')

Пример:

В таблица ниже перечислены все типы графиков.

ОбозначениеОписание маркера
‘o’
‘v’
‘^’
‘<‘
‘>’
‘2’
‘3’
‘4’
‘s’
‘p’
‘*’
‘h’
‘H’
‘+’
‘x’
‘D’
‘d’
‘|’
‘_’

Многолинейные графики

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

Для этого достаточно использовать несколько функций plt.plot() перед вызовом plt.show().

plt.plot(x, [i*2 for i in x], 'b-')
plt.plot(x, [i**2 for i in x], 'g-')
plt.plot(x, [i/2 for i in x], 'y-')
plt.show()

Гистограмма

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

Рассмотрим синтаксис гистограммы:

matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

аргументы, связанные с plt.bar(), очень просты. Однако я рекомендую ознакомиться с документацией.

bar_list = list(np.random.randint(1,150,8))
plt.bar(range(len(bar_list)), bar_list, color = '#AFC900')
# Для горизонтальной гистограммы
plt.barh(range(len(bar_list)), bar_list, color = '#AFC900')
plt.show() 

Сгруппированная гистограмма

Сгруппированная гистограмма – это разновидность столбчатой диаграммы, которая показывает, как две или более переменных сравниваются во времени. Ее также называют столбиковой диаграммой, и она выглядит как ряд столбцов или столбиков, расположенных друг над другом. При правильном использовании штабелированные диаграммы очень полезны для сравнения. Они предназначены для сравнения суммарных значений по категориям.

# Создадим два рандомных списка
t = list(np.random.randint(1,200,5))
m = list(np.random.randint(1,200,5))

x = np.arange(len(t)) # Задаем измерения для оси
width = 0.35  # Ширина бара
plt.bar(x - width/2, t, width)
plt.bar(x + width/2, m, width)

plt.show()

Круговая диаграмма

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

Рассмотрим синтаксис:

matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, *, normalize=True, data=None)


Наиболее важные аргументы:

  • x: основной массив, из которого нужно сделать визуализацию. Они должны составлять единое целое.
  • labels: имена меток, соответствующие каждому элементу в x
  • explode: для создания взорванной круговой диаграммы
  • startangle: угол, с которого начнется рисование
rndnums = list(np.random.randint(5,20,4))
labels = ['Город A', 'Город B', 'Город C', 'Город D']
plt.pie(rndnums, labels = labels)
plt.show()

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.