📊 阅读时长:16分钟 | 关键词:Matplotlib、plt.plot、figure画布、中文显示、折线图

引言

数据分析的成果最终要"被看见"。Matplotlib 是 Python 最经典的数据可视化库,几乎所有绘图库(Seaborn、Pandas 的 .plot())底层都在用它。这篇文章从零开始,带你画出第一张图。

一、Matplotlib 是什么?

Matplotlib 是 Python 常用的第三方 2D 绘图库,能画折线图、散点图、条形图、饼图、热力图……几乎所有你能想到的统计图表。

安装:

pip install matplotlib

导入惯例:

import matplotlib.pyplot as plt
import numpy as np

二、plt.plot() 绘制折线图

plt.plot() 是最核心的绘图函数。我们先看最快上手的方式:

x = np.linspace(-3, 3, 50)    # 从 -3 到 3 等间距取 50 个点
y = np.sin(x)

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

一条正弦曲线就出来了。但默认样式太素了,我们加上颜色、线型、标记:

plt.plot(x, y, 
         color='skyblue',          # 线的颜色
         linestyle='-.',           # 线条样式:点画线
         linewidth=2,              # 线条宽度
         marker='h',               # 数据点标记:竖六边形
         markerfacecolor='gold',   # 标记填充颜色
         markersize=8)             # 标记尺寸
plt.show()

参数完整列表

参数 说明 示例
x, y x 轴和 y 轴数据 x=[1,2,3], y=[4,5,6]
color 线的颜色 'red', '#FF0000', 'skyblue'
linestyle 线条样式 '-' 实线, '--' 虚线, '-.' 点画线, ':' 点线
linewidth 线条宽度(数字) 2, 3.5
marker 数据点标记样式 'o' 圆, '^' 三角, 's' 方形, '*' 星形
markerfacecolor 标记填充颜色 'gold'
markersize 标记尺寸 8
label 线条标签(配合 legend 使用) '正弦曲线'

linestyle 样式速查

写法一 写法二 效果
'-' 'solid' 实线 ───
'--' 'dashed' 虚线 —
'-.' 'dashdot' 点画线 -·-
':' 'dotted' 点线 ···
' ' 'None' 不显示线条

常用 marker 标记

符号 形状 符号 形状
'.' 's' 实心方形
'o' 实心圆 'p' 实心五角
'v' 倒三角 '*' 星形
'^' 上三角 '+' 十字
'<' / '>' 左/右三角 'x' x 形
'h' 竖六边形 'D' 菱形

三、在一张图上画多条线

x = np.linspace(-3, 3, 50)
y1 = 2*x + 2
y2 = x**2
y3 = np.sin(x)

plt.plot(x, y1, color='gold')
plt.plot(x, y2, color='red')
plt.plot(x, y3, color='green')
plt.show()

每调一次 plt.plot() 就在当前画布上叠加一条线。

四、plt.figure() 创建画布

4.1 隐式创建(最简单)

当你第一次执行 plt.plot() 时,Matplotlib 会自动创建一个画布和一个坐标系。不设置画布的情况下,一个画布上只有一个坐标系。

4.2 显式创建(多画布)
# 画布 1:包含两条线
plt.figure()
plt.plot(x, y1, color='gold')
plt.plot(x, y2, color='red')

# 画布 2:包含一条线
plt.figure()
plt.plot(x, y3, color='green')

plt.show()    # 一次性展示所有画布
4.3 figure() 参数详解
plt.figure(num=None, figsize=None, dpi=None, facecolor=None)
plt.figure(num=3, figsize=(7, 3), dpi=72, facecolor="red")
plt.plot(x, y)

plt.figure(num="画布二", figsize=(7, 3), dpi=72, facecolor="green")
plt.plot(x, y)
plt.show()
参数 说明 默认值
num 画布编号(数字)或名称(字符串) 按数字顺序递增
figsize 画布宽高,单位英寸 (6.4, 4.8)
dpi 分辨率(每英寸点数) 100
facecolor 背景颜色 白色

💡 num 为数字时是编号,为字符串时是名称。后续可通过编号/名称切换画布。

五、中文和负号显示问题

Matplotlib 默认不支持中文,画出来会是方块乱码。负号也可能显示异常。

解决方案:在代码最前面加两行配置:

import matplotlib.pyplot as plt

# 通过 rc 参数修改字体为黑体,就可以显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 通过 rc 参数修改字符显示,就可以正常显示负号
plt.rcParams['axes.unicode_minus'] = False

# 之后正常绘图,中文和负号都能正常显示了

⚠️ 注意:这两行必须放在所有绘图代码之前!

六、实战:画一张带样式的完整折线图

把前面学的组合起来:

import matplotlib.pyplot as plt
import numpy as np

# 解决中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 准备数据
x = np.linspace(-3, 3, 50)
y1 = 2*x + 1
y2 = np.sin(x)

# 创建画布,设置尺寸
plt.figure(figsize=(8, 4))

# 画两条线
plt.plot(x, y1, color='blue', linestyle='-', linewidth=2, label='直线')
plt.plot(x, y2, color='green', linestyle='--', linewidth=2, marker='o', 
         markerfacecolor='red', markersize=6, label='正弦曲线')

plt.show()

小结

序号 知识点 一句话
1 plt.plot() 最核心的绘图函数,color/linestyle/marker 三大参数
2 多条线 多次调用 plot 即可叠加
3 plt.figure() 显式创建画布,控制尺寸和分辨率
4 中文显示 rcParams 两行配置放最前面

下一篇文章,我们深入坐标轴的设置——标签、刻度、边框颜色、图例和文字标注,让你的图从"能看"变成"好看"。


本文是「Python从入门到数据分析」系列的第 19 篇。关注我,不错过后续更新。

更多推荐