Графики в Python: от простых линий до сложных визуализаций с Matplotlib и Seaborn

Раздел: Анализ данных -> Matplotlib и Seaborn

Основы построения графиков в Python

Для визуализации данных в Python чаще всего используются библиотеки Matplotlib и Seaborn. Рассмотрим базовый пример построения линейного графика.

Как построить простой линейный график?


import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)
plt.title('Линейный график')
plt.xlabel('Ось X')
plt.ylabel('Ось Y')
plt.show()

библиотека для построения графиков python (библиотека для построения графиков в python (matplotlib))

Пояснение: импортируется модуль pyplot, задаются данные, вызывается функция plot, добавляются заголовок и подписи осей, затем show() отображает график.

Типичные проблемы:

  • График не отображается: забыт вызов plt.show(). Если используется Jupyter Notebook, нужен %matplotlib inline.
  • Ошибка импорта: не установлена библиотека (pip install matplotlib).
  • Кириллица отображается кракозябрами: требуется указать шрифт, поддерживающий русские буквы, например, 'Arial Unicode MS' или 'DejaVu Sans'.
  • Данные не совпадают по длине: ошибка при построении.

Как построить гистограмму распределения?


import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(1000)
plt.hist(data, bins=30, edgecolor='black')
plt.title('Гистограмма')
plt.show()

библиотеки для визуализации данных python (библиотеки для визуализации данных в python (matplotlib, seaborn, plotly))

Цель: визуализация частотного распределения. Параметр bins определяет количество корзин. Проблема: слишком малое или большое количество бинов искажает вид. Решение: подбирать bins или использовать правила (Sturges, Scott).

Ошибка: не установлен numpy (pip install numpy).

Как построить диаграмму рассеяния (scatter plot)?


import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.scatter(x, y, c='red', s=50)
plt.title('Диаграмма рассеяния')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

визуализация программы python (визуализация программы на python)

Цель: показать взаимосвязь между двумя количественными переменными. Проблема: при большом количестве точек они могут накладываться. Решение: использовать прозрачность (alpha) или reduce.

Как использовать Seaborn для более стильного графика?


import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme(style='darkgrid')
data = sns.load_dataset('iris')
sns.lineplot(data=data, x='sepal_length', y='sepal_width', hue='species')
plt.title('Iris dataset: Sepal Length vs Width')
plt.show()

построить график по коду python (построение графика по коду python)

Seaborn упрощает создание статистических графиков. Цель: быстрая визуализация с привлекательным стилем. Проблема: отсутствие seaborn (pip install seaborn). Не все наборы данных доступны офлайн.

Как разместить несколько подграфиков на одном полотне?


import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2, figsize=(10, 8))
axes[0,0].plot([1,2,3], [1,4,9])
axes[0,1].hist(np.random.randn(100))
axes[1,0].scatter([1,2,3], [1,4,9])
axes[1,1].bar(['A','B','C'], [3,7,2])
plt.show()

Python визуализация (визуализация в python)

Цель: сравнение нескольких графиков. Проблема: путаница с индексацией осей. Решение: использовать ravel() или явно обращаться по номерам.

Как настроить внешний вид графика (стиль, легенда, цвета)?


import matplotlib.pyplot as plt

plt.style.use('ggplot')
x = [1,2,3]
y1 = [1,4,9]
y2 = [2,3,6]
plt.plot(x, y1, label='Квадраты', color='blue')
plt.plot(x, y2, label='Удвоенные', color='green', linestyle='--')
plt.legend(loc='best')
plt.title('Две линии')
plt.show()

Python создание графика (создание графика в python)

Цель: улучшение читаемости и эстетики. Проблема: легенда перекрывает данные. Решение: изменить loc или использовать bbox_to_anchor.

Как сохранить график в файл?


plt.plot([1,2,3],[1,4,9])
plt.savefig('graph.png', dpi=300, bbox_inches='tight')
plt.show()

Цель: экспорт для отчёта. Проблема: обрезанные подписи. Решение: bbox_inches='tight' автоматически подгоняет рамку. Формат может быть PNG, PDF, SVG.

- библиотеки визуализации python (библиотеки визуализации данных python)
- визуализация данных с помощью python (визуализация данных с помощью python)
- Python сохранить график (сохранение графика с помощью python)

Расширенные примеры построения графиков

Пример 1: Комбинированный график с двумя осями Y

Пример

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.exp(x/10) * 5

fig, ax1 = plt.subplots()
ax1.plot(x, y1, 'b-', label='sin(x)')
ax1.set_xlabel('X')
ax1.set_ylabel('sin(x)', color='b')
ax1.tick_params(axis='y', labelcolor='b')

ax2 = ax1.twinx()
ax2.plot(x, y2, 'r--', label='exp')
ax2.set_ylabel('exp(x/10)*5', color='r')
ax2.tick_params(axis='y', labelcolor='r')

plt.title('Два графика с разными шкалами')
fig.tight_layout()
plt.show()
Результат: один график с двумя осями ординат, синяя линия слева, красная пунктирная справа.

Пример 2: Использование Pandas для данных и группировка в Seaborn

Пример

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.DataFrame({
    'Category': ['A','A','B','B','C','C'],
    'Value': [1,2,3,4,5,6],
    'Group': ['X','Y','X','Y','X','Y']
})
sns.barplot(data=df, x='Category', y='Value', hue='Group')
plt.title('Группированная столбчатая диаграмма')
plt.show()
Результат: столбцы для каждой категории, разделенные по группе (X и Y) разными цветами.

Пример 3: Тепловая карта корреляций с Seaborn

Пример

import seaborn as sns
import matplotlib.pyplot as plt

corr = sns.load_dataset('iris').corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title('Матрица корреляций Iris')
plt.show()
Результат: тепловая карта с числовыми значениями корреляции, цвет от синего (отрицательная) до красного (положительная).

Пример 4: Субплоты с общими осями

Пример

import matplotlib.pyplot as plt
import numpy as np

fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)
x = np.linspace(0, 2*np.pi, 100)
for i in range(2):
    for j in range(2):
        axes[i,j].plot(x, np.sin(x + (i+j)*np.pi/2))
plt.show()
Результат: четыре одинаковых подграфика с общими осями X и Y, на каждом синусоида со сдвигом фазы.

Пример 5: Добавление аннотаций и текста

Пример

import matplotlib.pyplot as plt

plt.plot([1,2,3],[1,4,9], marker='o')
plt.annotate('Максимум', xy=(3,9), xytext=(2.5,8),
             arrowprops=dict(facecolor='black', shrink=0.05))
plt.text(1.5, 5, 'Пример текста', fontsize=12)
plt.show()
Результат: график с точками, стрелкой, указывающей на точку (3,9), и текстом внутри области.

Построение графика по коду Python - comments

En
построить график по коду python (python)