数据可视化(Matplotlib, Seaborn)

class Matplotlib,Seaborn

数据可视化是数据分析过程中至关重要的一部分,通过图形直观展示数据的特征和趋势,可以帮助我们更好地理解和解释数据。Python 提供了许多强大的可视化库,其中 Matplotlib 和 Seaborn 是最常用的两个库。

1. 安装 Matplotlib 和 Seaborn

首先,你需要安装这两个库。如果你还没有安装,可以通过以下命令进行安装:

pip install matplotlib seaborn

2. Matplotlib 基础

Matplotlib 是一个低级别的可视化库,提供了丰富的 API 用于创建各种类型的图表。它可以创建静态、动态和交互式的可视化。

2.1 创建基本图表

import matplotlib.pyplot as plt

# 创建简单的折线图
x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 40]

plt.plot(x, y)
plt.title('Simple Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

2.2 设置图表样式

Matplotlib 提供了多种图表样式和主题,你可以使用 plt.style.use() 来应用预设样式。

plt.style.use('ggplot')

plt.plot(x, y)
plt.title('Styled Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()

2.3 子图布局

你可以在一个图形中包含多个子图(subplot)。

fig, axs = plt.subplots(2, 2)

axs[0, 0].plot(x, y, 'r')
axs[0, 0].set_title('Red Line')

axs[0, 1].plot(x, [i**2 for i in x], 'g')
axs[0, 1].set_title('Green Line')

axs[1, 0].plot(x, [i**3 for i in x], 'b')
axs[1, 0].set_title('Blue Line')

axs[1, 1].plot(x, [i**4 for i in x], 'k')
axs[1, 1].set_title('Black Line')

plt.tight_layout()
plt.show()

2.4 常见图表类型

  • 折线图 (plt.plot):用于展示趋势变化。
  • 柱状图 (plt.bar):用于比较不同类别的数据。
  • 散点图 (plt.scatter):用于展示两个变量之间的关系。
  • 直方图 (plt.hist):用于展示数据的分布。
# 柱状图
categories = ['A', 'B', 'C', 'D']
values = [5, 7, 3, 4]
plt.bar(categories, values)
plt.title('Bar Chart')
plt.show()

# 散点图
x = [5, 7, 8, 7, 2, 17, 2, 9, 4, 11]
y = [99, 86, 87, 88, 100, 86, 103, 87, 94, 78]
plt.scatter(x, y)
plt.title('Scatter Plot')
plt.show()

# 直方图
data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
plt.hist(data, bins=4)
plt.title('Histogram')
plt.show()

3. Seaborn 基础

Seaborn 是基于 Matplotlib 之上的高级可视化库,专门用于统计图表的绘制。它提供了更高级别的接口和默认的主题风格,使得创建复杂的统计图表变得更加容易。

3.1 创建基本图表

import seaborn as sns
import matplotlib.pyplot as plt

# 加载示例数据集
tips = sns.load_dataset('tips')

# 创建简单的散点图
sns.scatterplot(x='total_bill', y='tip', data=tips)
plt.title('Scatter Plot of Tips')
plt.show()

3.2 主题与样式

Seaborn 提供了多种主题和调色板,可以用来设置图表的风格。

sns.set(style='darkgrid', palette='muted')

# 创建带有主题的散点图
sns.scatterplot(x='total_bill', y='tip', data=tips)
plt.title('Scatter Plot with Darkgrid Style')
plt.show()

3.3 常见图表类型

  • 条形图 (sns.barplot):用于展示类别数据的均值和置信区间。
  • 箱线图 (sns.boxplot):用于展示数据的分布情况及其异常值。
  • 分布图 (sns.histplotsns.kdeplot):用于展示数据的概率分布。
  • 热力图 (sns.heatmap):用于展示数据矩阵的值的大小。
# 条形图
sns.barplot(x='day', y='total_bill', data=tips)
plt.title('Bar Plot of Total Bill')
plt.show()

# 箱线图
sns.boxplot(x='day', y='total_bill', data=tips)
plt.title('Box Plot of Total Bill')
plt.show()

# 分布图
sns.histplot(tips['total_bill'], kde=True)
plt.title('Histogram with KDE')
plt.show()

# 热力图
flights = sns.load_dataset("flights")
flights_pivot = flights.pivot("month", "year", "passengers")
sns.heatmap(flights_pivot, annot=True, fmt="d", cmap="YlGnBu")
plt.title('Heatmap of Flight Passengers')
plt.show()

3.4 数据关系图

Seaborn 提供了一些专门用于展示数据之间关系的图表,例如 pairplotjointplot

# 多变量关系图(成对关系图)
sns.pairplot(tips, hue='sex')
plt.suptitle('Pair Plot of Tips Dataset', y=1.02)
plt.show()

# 联合分布图
sns.jointplot(x='total_bill', y='tip', data=tips, kind='reg')
plt.suptitle('Joint Plot with Regression Line', y=1.02)
plt.show()

4. 自定义与高级主题

无论是 Matplotlib 还是 Seaborn,都支持高度自定义的可视化。你可以自定义图表的每个部分,包括颜色、线型、标题、标签、图例等。

# 自定义 Matplotlib 图表
plt.plot(x, y, color='green', marker='o', linestyle='--', linewidth=2, markersize=8)
plt.title('Customized Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.grid(True)
plt.show()

# 自定义 Seaborn 图表
sns.set(style='whitegrid')
sns.boxplot(x='day', y='total_bill', data=tips, palette='Set3')
sns.despine(left=True)
plt.title('Customized Box Plot')
plt.show()

5. 总结

  • Matplotlib:适合需要高度自定义的图表、科研报告中的精细化展示。
  • Seaborn:适合快速创建美观的统计图表,尤其是涉及数据关系、分布的可视化任务。

通过掌握 Matplotlib 和 Seaborn,你可以应对大部分的数据可视化需求,从简单的线条图到复杂的多变量分析图,为数据分析和模型结果的展示提供有力支持。

评论区
评论列表
menu