Python绘图与数据可视化实战指南
目录
一、 基础工具库
1、Matplotlib(最基础的绘图库)
2、Seaborn(基于 Matplotlib 的高级统计图表库)
3、Pandas 内置绘图(适合快速探索数据)
二、常见图表类型及代码
三、学习技巧
一、 基础工具库
1、Matplotlib(最基础的绘图库)
安装:pip install matplotlib
核心概念:
Figure
:画布(类似一张纸)
Axes
:坐标系(在画布上划分绘图区域)
快速上手:
import matplotlib.pyplot as plt
# 准备数据
x = [1, 2, 3, 4]
y = [10, 20, 15, 30]
# 创建画布和坐标系
plt.figure(figsize=(8, 4)) # 设置画布大小
plt.plot(x, y, label='折线', color='blue', linestyle='--') # 画折线图
plt.title("我的第一个图表") # 标题
plt.xlabel("X轴") # X轴标签
plt.ylabel("Y轴") # Y轴标签
plt.legend() # 显示图例
plt.grid(True) # 显示网格
plt.show() # 显示图表
运行结果:
代码分析:
(1)导入库:
import matplotlib.pyplot as plt
作用:导入 Matplotlib 的绘图模块,并简写为 plt
(行业惯例)。
注意:需提前安装库(命令行运行 pip install matplotlib
)。
(2)准备数据
x = [1, 2, 3, 4]
y = [10, 20, 15, 30]
作用:定义 X 轴和 Y 轴的数据(两个列表长度需一致)。
对应关系:(1,10)
, (2,20)
, (3,15)
, (4,30)
四个坐标点。
(3)创建画布
plt.figure(figsize=(8, 4))
作用:创建画布并设置尺寸为 8 英寸(宽)× 4 英寸(高)。
扩展:若不设置尺寸,Matplotlib 会使用默认大小。
(4)绘制折线图
plt.plot(x, y, label='示例折线', color='blue', linestyle='--')
参数解析:
x, y
:数据点坐标。
label
:图例标签名称。
color
:线条颜色(支持英文名、十六进制码等)。
linestyle
:线型('-'
实线,':'
点线,'--'
虚线等)。
(5)添加图表元素
plt.title("我的第一个图表") # 标题
plt.xlabel("X轴") # X轴标签
plt.ylabel("Y轴") # Y轴标签
plt.legend() # 显示图例
plt.grid(True) # 显示网格
细节:
标题和轴标签支持通过 fontsize
参数调整字体大小(如 fontsize=12
)。
plt.legend()
依赖 plot()
中的 label
参数生成图例。
(6)显示图表
plt.show()
作用:弹出窗口显示绘制好的图表。
注意:在脚本中必须调用此方法才能显示图表(Jupyter Notebook 中可能自动显示)。
(7)扩展学习建议
-
修改样式:尝试更改
color
和linestyle
,观察图表变化。 -
添加更多数据:扩展
x
和y
列表,绘制更复杂的曲线。 -
其他图表类型:探索
plt.bar()
(柱状图)、plt.scatter()
(散点图)等函数。 -
保存图表:在
plt.show()
前添加plt.savefig('chart.png')
可保存为图片。
2、Seaborn(基于 Matplotlib 的高级统计图表库)
特点:简化复杂图表(如热力图、分布图)的代码
安装:pip install seaborn
快速示例:
import matplotlib.pyplot as plt
import seaborn as sns
tips = sns.load_dataset("tips") # 内置示例数据集
# 绘制箱线图
sns.boxplot(x="day", y="total_bill", data=tips)
plt.show()
运行结果:
代码分析:
(1)导入库
(2)加载数据集
tips = sns.load_dataset("tips") # 内置示例数据集
数据集说明:
Seaborn 内置的餐厅小费数据集
包含 244 行数据,列包括:
total_bill
:总消费金额(美元)
tip
:小费金额
day
:星期几(Thur, Fri, Sat, Sun)
其他列:性别、是否吸烟、用餐时间等。
(3)绘制箱线图
sns.boxplot(x="day", y="total_bill", data=tips)
参数解析:
x="day"
:将星期几(分类变量)放在 X 轴
y="total_bill"
:将消费金额(数值变量)放在 Y 轴
data=tips
:指定数据来源
箱线图作用:
展示不同星期几的消费金额分布
显示中位数、四分位数、离群值等统计信息
(4)显示图表
plt.show()
注意:虽然使用了 Seaborn,但最终仍需要通过 Matplotlib 的 plt.show()
显示图表
(5)最终效果
生成 4 个箱线图(对应星期四到星期日)
每个箱线图展示当天所有顾客消费金额的分布情况
(6)常见问题解答
Q1:为什么选择箱线图?
适合比较不同类别间的数值分布
能直观显示数据的中位数、波动范围和异常值
Q2:数据格式要求?
X 轴一般为分类变量(字符串或有限类别)
Y 轴为连续数值变量
Q3:如何保存图表?
在 plt.show()
前添加:
plt.savefig("boxplot.png", dpi=300)
3、Pandas 内置绘图(适合快速探索数据)
直接调用 DataFrame 的 .plot()
方法:
# 导入必要库
import pandas as pd
import matplotlib.pyplot as plt # 必须添加
# 创建 DataFrame
df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})
# 绘制柱状图
df.plot(kind='bar')
# 显示图表
plt.show() # 确保调用此方法
运行结果:
代码分析:
(1) 导入库
import pandas as pd
import matplotlib.pyplot as plt # 必须添加
作用:
pandas
用于数据处理(创建 DataFrame)
matplotlib.pyplot
是绘图的核心模块
注意:
虽然 df.plot()
是 pandas 的方法,但底层依然依赖 Matplotlib,所以必须导入 plt
并用 plt.show()
显示图表
(2) 创建 DataFrame
df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]})
结果:
A B
0 1 4
1 2 5
2 3 6
绘图关键点:
默认使用 DataFrame 的索引(0,1,2)作为 X 轴
列名 A
和 B
会自动成为图例中的标签
(3) 绘制柱状图
df.plot(kind='bar')
等价写法:
df.plot.bar() # 更简洁的写法
参数说明:
kind='bar'
:指定柱状图类型(若想要水平柱状图用 kind='barh'
)
默认颜色会自动分配(可通过 color=['blue','orange']
自定义)
(4) 显示图表
plt.show()
为什么必须:
在非 Jupyter 环境中(如普通 Python 脚本),必须调用此方法才会显示图表
在 Jupyter Notebook 中可配合 %matplotlib inline
魔法命令自动显示
二、常见图表类型及代码
图表类型 | 用途 | 代码片段 |
---|---|---|
折线图 | 趋势分析 | plt.plot(x, y) |
散点图 | 相关性分析 | plt.scatter(x, y) |
柱状图 | 分类数据对比 | plt.bar(categories, values) |
直方图 | 数据分布 | plt.hist(data, bins=20) |
箱线图 | 数据分布与异常值检测 | sns.boxplot(x='category', y='value', data=df) |
热力图 | 矩阵数据/相关性矩阵 | sns.heatmap(corr_matrix) |
三、学习技巧
-
从简单图表开始:先掌握折线图、柱状图等基础图表。
-
修改示例代码:调整颜色、标签、标题等参数,观察变化。
-
结合数据分析:用真实数据(如 CSV 文件)练习绘图。
-
善用文档:
作者:晨曦543210