跳转至

03 - 数据可视化

学习时间: 2-3小时 重要性: ⭐⭐⭐⭐ 数据探索和结果展示


🎯 学习目标

  • 掌握Matplotlib基础
  • 能绘制常用图表
  • 学会美化图表

📊 Matplotlib基础

Python
import matplotlib.pyplot as plt
import numpy as np

# 设置中文显示(跨平台兼容)
import platform

system = platform.system()
if system == 'Windows':
    plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'Arial Unicode MS']
elif system == 'Darwin':  # macOS
    plt.rcParams['font.sans-serif'] = ['Arial Unicode MS', 'SimHei', 'Heiti TC']
else:  # Linux
    plt.rcParams['font.sans-serif'] = ['WenQuanYi Micro Hei', 'SimHei', 'Noto Sans CJK SC']

plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示问题

# 最简单的图表
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

plt.plot(x, y)
plt.show()

# 添加标题和标签
plt.plot(x, y)
plt.title('简单折线图')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()

📈 常用图表

折线图

Python
# 单条线
x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.figure(figsize=(10, 6))
plt.plot(x, y, label='sin(x)')
plt.plot(x, np.cos(x), label='cos(x)')
plt.title('三角函数')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.grid(True)
plt.show()

散点图

Python
# 基本散点图
x = np.random.randn(100)
y = np.random.randn(100)

plt.scatter(x, y)
plt.title('散点图')
plt.show()

# 带颜色和大小
colors = np.random.rand(100)
sizes = 1000 * np.random.rand(100)

plt.scatter(x, y, c=colors, s=sizes, alpha=0.5)
plt.colorbar()
plt.show()

柱状图

Python
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 35]

plt.bar(categories, values)
plt.title('柱状图')
plt.xlabel('类别')
plt.ylabel('值')
plt.show()

# 水平柱状图
plt.barh(categories, values)
plt.show()

直方图

Python
data = np.random.randn(1000)

plt.hist(data, bins=30, edgecolor='black')
plt.title('直方图')
plt.xlabel('值')
plt.ylabel('频数')
plt.show()

箱线图

Python
data = [np.random.randn(100) for _ in range(4)]

plt.boxplot(data, labels=['A', 'B', 'C', 'D'])
plt.title('箱线图')
plt.show()

🎨 图表美化

Python
# 完整示例
x = np.linspace(0, 10, 100)

fig, ax = plt.subplots(figsize=(10, 6))

ax.plot(x, np.sin(x), label='sin(x)', linewidth=2, color='blue')
ax.plot(x, np.cos(x), label='cos(x)', linewidth=2, color='red')

ax.set_title('三角函数', fontsize=16, pad=20)
ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.legend(fontsize=12)
ax.grid(True, linestyle='--', alpha=0.6)
ax.set_xlim(0, 10)
ax.set_ylim(-1.2, 1.2)

plt.tight_layout()
plt.show()

📊 Pandas集成

Python
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({
    'year': [2018, 2019, 2020, 2021, 2022],
    'sales': [100, 120, 150, 180, 200],
    'profit': [20, 25, 30, 35, 40]
})

# 直接从DataFrame绘图
df.plot(x='year', y='sales', kind='line', figsize=(10, 6))
plt.title('销售额趋势')
plt.show()

# 多列
df.plot(x='year', y=['sales', 'profit'], kind='line')
plt.show()

# 柱状图
df.plot(x='year', y='sales', kind='bar')
plt.show()

# 散点图
df.plot(x='sales', y='profit', kind='scatter')
plt.show()

📝 练习

  1. 绘制正弦和余弦函数的对比图
  2. 创建一个分类数据的柱状图
  3. 可视化Pandas DataFrame的数据

🎯 自我检查

  • 能绘制基本的图表类型
  • 能美化图表
  • 能从DataFrame直接绘图

下一步: 04 - 实战项目