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

时间:2013-02-28 20:44:14

标签: python numpy matplotlib loops

我有一个非常雄心勃勃的项目(对于我的新手级别)在numpy数组上使用,我在其中加载一系列数据,并根据我的需要制作不同的图表 - 我已经上传了我的数据文件的简约版本{{ 3}}并且想要绘制基于以下的图:F(我希望在循环之前选择所需的F),并且每个系列将具有来自E列的数据(例如A12一个数据系列,A23图中的另一个数据系列)等等)在X轴上我想使用D中的相应值。

所以总结列FI上的选择值想要有4个不同的数据系列(作为E列上的变量数),数据应该是列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 个答案:

答案 0 :(得分: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))
相关问题