2

一連のデータをロードし、ニーズに基づいてさまざまなプロットを作成する numpy 配列で使用する非常に野心的なプロジェクト (初心者レベル向け) がありました - データファイルinput_dataのスリムバージョンをアップロードして、 F (ループする前に目的の F を選択したい場合) に基づいてプロットし、各シリーズには E 列 (たとえば、プロット内の A12 1 つのデータ シリーズ、A23 別のデータ シリーズなど) からのデータが含まれます。軸 D で対応する値を使用したいと思います。

列FIの選択された値を要約すると、4つの異なるデータシリーズ(列Eの変数の数として)が必要であり、データは列Dの値(日付)の参照(x軸)である必要があります

最初のステップでつまずきました (時間がかかりすぎましたが)、F 列識別子を使用してすべてのデータを 1 つのプロットとしてプロットしたかったのです。これが私が今まで持っているものです:

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()

datasetDataFrameオブジェクトであり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 に答える