Python绘图:从基础到进阶的图表绘制指南

Python绘图:从基础到进阶的图表绘制指南

在数据科学和机器学习领域,数据可视化是理解和传达数据的关键。Python凭借其丰富的库生态,成为绘制图表的首选语言。本文将带你从零开始,学习如何使用MatplotlibSeaborn创建专业图表。

1. 环境准备

首先,安装必要的库:

pip install matplotlib seaborn pandas

导入库并设置中文字体:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
# 解决中文显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

2. 基础图表绘制

2.1 折线图

折线图适合展示趋势:

x = [1,2,3,4,5]
y = [2,4,1,5,3]
plt.plot(x, y, marker='o', linestyle='--', color='b')
plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.grid(True)
plt.show()

2.2 柱状图

柱状图用于比较分类数据:

categories = ['A', 'B', 'C', 'D']
values = [23, 45, 56, 12]
plt.bar(categories, values, color=['red', 'green', 'blue', 'orange'])
plt.title('柱状图示例')
plt.show()

2.3 散点图

散点图显示变量关系:

import numpy as np
x = np.random.randn(100)
y = np.random.randn(100)
plt.scatter(x, y, alpha=0.5, s=50)
plt.title('散点图示例')
plt.show()

2.4 饼图

饼图展示占比:

sizes = [30, 25, 20, 15, 10]
labels = ['苹果', '香蕉', '橙子', '葡萄', '其他']
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
plt.axis('equal')
plt.title('水果占比')
plt.show()

3. Seaborn高级绘图

Seaborn基于Matplotlib,提供更简洁的API和漂亮默认样式。

3.1 箱线图

tips = sns.load_dataset('tips')
sns.boxplot(x='day', y='total_bill', data=tips)
plt.title('每日消费金额箱线图')
plt.show()

3.2 热力图

corr = tips.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title('相关性热力图')
plt.show()

3.3 多子图布局

fig, axes = plt.subplots(2, 2, figsize=(10,8))
sns.scatterplot(x='total_bill', y='tip', data=tips, ax=axes[0,0])
sns.histplot(tips['total_bill'], bins=20, ax=axes[0,1])
sns.barplot(x='day', y='total_bill', data=tips, ax=axes[1,0])
sns.boxplot(x='time', y='tip', data=tips, ax=axes[1,1])
plt.tight_layout()
plt.show()

4. 图表美化技巧

  • 设置样式sns.set_style('whitegrid')
  • 自定义颜色:使用十六进制或颜色名称
  • 添加注释plt.annotate()
  • 调整图例plt.legend(loc='upper right')

5. 实战案例:股票走势图

import yfinance as yf
df = yf.download('AAPL', start='2023-01-01', end='2023-12-31')
plt.figure(figsize=(12,6))
plt.plot(df['Close'], label='收盘价', color='black')
plt.plot(df['Close'].rolling(window=20).mean(), label='20日均线', linestyle='--')
plt.title('苹果公司2023年股价走势')
plt.legend()
plt.show()

6. 总结

Python绘图库功能强大,从简单的折线图到复杂的统计图形,都能轻松实现。掌握Matplotlib和Seaborn,你就能在数据分析和报告中呈现专业美观的可视化效果。持续练习,你会发现数据之美!