【Python系列课程】Matplotlib(一):基础绘图——plot、figure与中文显示
·
📊 阅读时长: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 篇。关注我,不错过后续更新。
更多推荐


所有评论(0)