如何使用matplotlib从numpy列表绘制多个数据集

2024-06-01 12:28:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,正在努力用matplotlib在一个图上绘制多条曲线。你知道吗

我有50个数据文件。我把它们都读进去,然后把它们存储在一个3D numpy列表中。第一个维度是文件号,第二个维度是时间,第三个维度是被测量的参数(时间,压力,…)。对于单个文件,数据可能如下所示:

(时间)(压力) 1 3.4 2 5.1 3 5.1 4 5.1 5.7.8条

我想在一张图上画出所有50个时间和压力的曲线。到目前为止我得到的是:

plt.plot(\
    clipData[0,:,0], clipData[0,:,1],\
    clipData[1,:,0], clipData[1,:,1],\
    clipData[2,:,0], clipData[2,:,1])
plt.show()

这对前三条曲线很好,但我认为必须有一种方法可以做到这一点,而不必手动将列表生成为50。我考虑过使用循环将列表构建为一个长字符串,然后将该字符串推入plot()中。你知道吗

guts = 'clipData[0,:,0], clipData[0,:,1]'
plt.plot(guts)
plt.show

但我的简单测试表明我做错了什么。你知道吗

任何帮助都将不胜感激,我相信有一个优雅的方法可以做到这一点。你知道吗


Tags: 文件方法字符串列表plotmatplotlibshow时间
3条回答
for i in range(0,len(clipData)):
    plt.plot(clipData[i,:,0],clipData[i,:,1])
plt.show()

这样,您的绘图例程将运行任何长度的clipData或如果您在将来更改它。你知道吗

可以将两个二维数组传递给plot。第一个数组中的每一列都将与第二个数组的相应列相对应。你知道吗

plt.plot(clipData[:, :, 0].T, clipData[:, :, 1].T)

以这种方式打印在指定线特性时会受到一定的限制,特别是不能为每条线传递标签。对于线特性的完全控制,在循环中打印会更方便。你知道吗

可能是这样的:

for i in range(50):
    plt.plot(clipData[i,:,0], clipData[i,:,1])
plt.show()

因为当你使用 guts = 'clipData[0,:,0], clipData[0,:,1]'guts只是一个无法绘制的字符串。你知道吗

相关问题 更多 >