需求
?
? ? ? ? 有一数据集如下表所示, 它是一组二维数据, 每行代表了一条曲线。 我们的需求是把该表中的所有行看做一条曲线并在一张图中绘制出所有的曲线。
代码
? ? ? ? 一般的绘图, 在曲线条数比较少时, 只需要多添加几个 plot 语句即可。但是在曲线条数动辄数百上千时, 我们使用手动的 plot 添加效率十分低下(查过一些资料, 循环执行 plot 语句是不奏效的, 它会弹出 n 个图像框, 每个图像中仅有一条曲线, 所以只有手动添加 plot 语句来实现)。为了防止手动添加 plot 语句的繁琐情况, 我们使用 字符串拼接?+ Python执行字符串代码 来实现二维数据图的绘制,? 代码如下。
import matplotlib.pyplot as plt
import numpy as np
# 创建二维数据和坐标
x = np.linspace(0, 4, 4) # 创建x的取值范围 0-20 范围内 20 个点
data = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
lineSize = len(data) # 获取数据的行数 一维特征
# 生成绘图代码
## 绘图
y1 = x
code = ""
for i in range(lineSize):
code += "plt.plot(x, data[{}], lw=0.8)".format(i) + "\n" # 拼接图像
print(code,lineSize)
c1 = compile(code, "", mode="exec") # 将字符串编译为 exec 可执行的类型
exec(code) # 执行字符串代码
plt.show() # 打印图像
效果
? ? ? ? shape = (170,4200) 的二维数据图像, 采用 numpy 作为数据裁剪方式
?说明
?
? ? ? ? 比较庞大的数据集可以使用 numpy 来进行加载和裁剪, matplotlib 支持 ndarray 类型数据的读取和绘制, 代码只需要应用自己的数据集做一些修改即可使用。
感谢大家的阅读, 评论区欢迎您的讨论和建议~~
|