安装
Matplotlib的安装:
1.pip install matplotlib
2.conda install matplotlib (清华源:https://pypi.tuna.tsinghua.edu.cn/simple)
Matplotlib的导入: import matplotlib.pyplot as plt
介绍
Matplotlib 是 Python 的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格 式。
基础绘图功能
plot() :用于画图,它可以绘制点和线,语法格式如下: plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
x, y |
点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。 |
fmt |
可选,定义基本格式(如颜色、标记和线条样式)。 |
**kwargs |
可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。 |
plot() :用于画图,它可以绘制点和线。 · 绘制坐标 (1, 3) 到 (8, 10) 的线。
import matplotlib.pyplot as plt
import numpy as np
xpoints = np.array([1, 8])
ypoints = np.array([3, 10])
plt.plot(xpoints, ypoints)
plt.show()

关键参数:
marker:点标记样式(o圆点、s方块)
linestyle/ls:线型(-实线、--虚线)
color/c:颜色(名称/十六进制/RGB值)
linewidth/lw:线宽
如果我们不指定 x 轴上的点,则 x 会根据 y 的值来设置为 0, 1, 2, 3..N-1。
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([3, 10])
plt.plot(ypoints)
plt.show()
练习
在同一张图中分别绘制正弦图和余弦图
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 创建数据点
x = np.linspace(0, 12, 1000) # 横坐标从0到12
y_sin = np.sin(x) # 正弦函数
y_cos = np.cos(x) # 余弦函数
# 创建图形
plt.figure(figsize=(10, 6))
# 绘制正弦曲线(蓝色)
plt.plot(x, y_sin, color='blue', linewidth=2, label='sin(x)')
# 绘制余弦曲线(橙色)
plt.plot(x, y_cos, color='orange', linewidth=2, label='cos(x)')
# 设置坐标轴范围和刻度
plt.xlim(0, 12)
plt.ylim(-1, 1)
# 设置x轴刻度(0,2,4,6,8,10,12)
plt.xticks(np.arange(0, 13, 2))
# 设置y轴刻度(-1.00到1.00,每0.25一个刻度)
plt.yticks(np.arange(-1.00, 1.25, 0.25))
# 添加网格线
plt.grid(True, linestyle='--', alpha=0.7)
# 添加图例
plt.legend(loc='upper right')
# 添加坐标轴标签
plt.xlabel('x')
plt.ylabel('y')
# 显示图形
plt.show()
结果展示:

plot()中的 marker 参数:定义一些不一样的标记

总结基础图表类型:
图表类型 |
函数 |
关键参数 |
参数解释 |
|---|---|---|---|
折线图 |
|
|
linestyle: 线条样式('-'实线、'--'虚线、':'点线等) color: 线条颜色(名称如'red'、十六进制值如'#FF5733') |
散点图 |
|
|
c: 点的颜色(单一颜色或数组,用于数值映射) alpha: 透明度(0透明~1不透明) |
柱状图 |
|
|
color: 柱子填充色(支持列表按柱子分配颜色) edgecolor: 柱子边框颜色(如'black') |
水平柱状图 |
|
|
align: 对齐方式('center'居中、'edge'边缘对齐刻度) |
饼图 |
|
|
explode: 区块分离距离(列表,如[0,0.1,0]突出第二块) shadow: 是否添加阴影(True/False) |
直方图 |
|
|
density: 是否归一化为概率密度(True显示频率) stacked: 多数据是否堆叠(True堆叠显示) |
热力图 |
|
|
interpolation: 像素插值方法('nearest'锯齿、'bilinear'平滑) |
scatter():绘制散点图
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y, color = 'hotpink')
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#88c999')
plt.show()

bar():绘制柱形图, 自定义各个柱形的颜色:

练习2

图表定制化总结
定制要素 |
函数/参数 |
配置示例 |
参数解释 |
|---|---|---|---|
坐标轴 |
|
|
yticks(ticks, labels):设置Y轴刻度位置(ticks为刻度值列表,labels为对应标签)。 |
网格 |
|
|
axis:网格方向('x'、'y'、'both')。 linestyle:线型(如'--'虚线)。 alpha:透明度(0~1)。 |
标签 |
|
|
fontsize:字体大小(单位:磅)。 labelpad:标签与坐标轴的距离(像素)。 pad(标题):标题与图表顶部的间距。 |
图例 |
|
|
title:图例标题文本。 bbox_to_anchor:自定义定位(元组坐标)。 ncol:图例列数(默认为1)。 |
布局 |
|
|
w_pad/h_pad:子图间水平/垂直间距。 rect:调整后的矩形区域([left, bottom, right, top])。 |
子图 |
|
|
index:子图位置索引(从1开始)。 projection:坐标系类型(如'polar'极坐标) |
pie():绘制饼图

练习3
已知五年级三班的同学中,喜欢篮球的同学占20%,喜欢乒乓球的同学占30%,喜欢羽毛球的同学占20%,喜欢足球的同学占18%,喜欢排球的同学占12%。请你根据已知条件画出一个饼图,让所占比例看的更加清楚。
import matplotlib.pyplot as plt
import numpy as np
y = np.array([20, 30, 20, 18, 12])
plt.pie(y,
labels=['篮球', '乒乓球', '羽毛球', '足球', '排球'], # 设置饼图标签
colors=["#d5695d", "#5d8ca8", "#65a479", "#a564c9", "#e8c547"], # 补充第5种颜色
explode=(0.1, 0.3, 0.1, 0, 0), # 修正中文逗号和长度
autopct='%.2f%%',
)
plt.title("五年级三班球类运动喜好分布") # 优化标题描述
plt.show()

使用 hist() 函数绘制多个数据组的直方图

我们也可以结合 Pandas 来绘制直方图

imshow() 可以显示热力图

imshow() 创建了一个 4x4 的二维 numpy 数组,并对其进行了三种不同的 imshow 图像展示
