从numpy数组绘制多个数据系列

2 投票
1 回答
3396 浏览
提问于 2025-04-17 17:29

我有一个很有挑战性的项目(对于我这个新手来说),想用numpy数组来处理数据。我打算加载一系列数据,并根据我的需求制作不同的图表。我上传了一个简化版的数据文件input_data,我想根据F列的值来制作图表(在循环之前我想先选择好想要的F值),每个系列的数据来自E列(比如A12是一组数据,A23是另一组数据,等等),而X轴我想用D列对应的值。

简单来说,对于选定的F列值,我想要4个不同的数据系列(因为E列有4个变量),这些数据应该以D列的值(日期)作为参考(X轴)。

我在第一步就卡住了(虽然花了很多时间),我想把所有F列标识的数据绘制成一个图表。现在我做到的就是这个:

import os 
import numpy as np
N = 8 #different values on column F
M = 4 #different values on column E
dataset = open('array_data.txt').readlines()[1:]
data = np.genfromtxt(dataset)
my_array = data
day = len(my_array)/M/N # number of measurement sets - variation on column D
for i in range(0, len(my_array), N):
    plt.xlim(0, )
    plt.ylim(-1, 2)
    plt.plot(my_array[i, 0], my_array[i, 2], 'o')
    plt.hold(True)
plt.show()

这没什么用……我还有很长的路要走……

相关问题:

1 个回答

2

使用pandas,你可以这样做:

import pandas as pd
dataset = pd.read_table("toplot.txt", sep="\t")
#make D index (automatically puts it on the x axis)
dataset.set_index("D", inplace=True)
#plotting R vs. D
dataset.R.plot()
#plotting F vs. D
dataset.F.plot()

dataset 是一个 DataFrame 对象,而 DataFrame.plot 其实就是一个包装器,用来调用matplotlib这个库的绘图功能。

我不太明白你想怎么绘图,但听起来你需要选择某一列中的一些值。这个操作可以这样进行:

# get where F == 1000
maskF = dataset.F == 1000
# get the values where F == 1000
rows = dataset[maskF]
# get the values where A12 is in column E
rows = rows[rows.E == "A12"]
#remove the we don't want to see
del rows["E"]
del rows["F"]
#Plot the result
rows.plot(xlim=(0,None), ylim=(-1,2))

撰写回答