2

我有一个非常雄心勃勃的项目(对于我的新手级别)要在 numpy 数组上使用,我在其中加载一系列数据,并根据我的需要制作不同的图 - 我已经上传了我的数据文件input_data的精简版本并想做绘图基于: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()

这没有任何作用..我还有很长的路要走..

4

1 回答 1

2

使用熊猫,您可以:

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))
于 2013-02-28T22:09:35.053 回答