Графики в Python: от простых линий до сложных визуализаций с 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.
Расширенные примеры построения графиков
Пример 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), и текстом внутри области.