0

2 つの独立変数を 1 つのグラフにプロットすることで、2 つの独立変数が時間とともにどのように変化するかを比較したいと考えています。3 つの変数はすべて、テキスト ファイルから取得した配列の形式になっています。これは私がこれまでに得たものです:

from pylab import *

data_ = []

with open('all_the_data.txt') as dat_:
    for line in dat_:
        data_.append([i for i in line.split()])

D = zip(*data_)

def f1(t):
    y = D[1]
    return y

def f2(t):
    y = D[2]
    return y

if __name__ == '__main__':
    t = D[0]
    A = f1
    B = f2
    plot(t, A, 'bo')
    hold('on')
    plot(t, B, 'gX')
    xlabel('timestamp (unix)')
    ylabel('Station population')
    legend('Station 1','Station 2')
    title('Variance of Stations 1 and 2')
    show()
    savefig('2_stations_vs_time.png')

問題は、それが機能していないことです。その理由はわかりません。2つの関数のグラフ化に関するチュートリアルから取得しました。

4

2 に答える 2

1

編集:問題はデータの抽出方法にあると思います。A=f1andを呼び出すときは、 andを構築した方法に準拠するようにandをB=f2記述する必要があります。しかし、なぜそのようにするのですか?A=f1(t)B=f2(t)f1f2

with open('all_the_data.txt', 'r') as dat_:
    for line in dat_:
        data_.append([i for i in line.strip().split()])

D = zip(*data_)
t = D[0]
A = D[1]
B = D[2]

プロットについては、オブジェクト指向のアプローチを好みます。

import matplotlib.pyplot as plt
f = plt.figure()
ax = f.add_subplot(111)
ax.plot(t, A, 'bo', label="Station 1")
ax.plot(t, B, 'gX', label="station 2")
ax.legend()

ax.set_xlabel('timestamp (unix)')
ax.set_ylabel('Station population')
ax.set_title('Variance of Stations 1 and 2')

f.savefig('2_stations_vs_time.png')
于 2013-07-11T16:33:36.830 に答える
0

関数ではなくデータをプロットします。Aしたがって、passBは間違っています。あなたがする必要があるのは次のことだと思います:

from pylab import *

data_ = []

with open('all_the_data.txt') as dat_:
    for line in dat_:
        data_.append([i for i in line.split()])

D = zip(*data_)

if __name__ == '__main__':
    t = D[0]
    A = D[1]
    B = D[2]
    plot(t, A, 'bo')
    hold('on')
    plot(t, B, 'gX')
    xlabel('timestamp (unix)')
    ylabel('Station population')
    legend('Station 1','Station 2')
    title('Variance of Stations 1 and 2')
    show()
    savefig('2_stations_vs_time.png')

Dたとえば、あなたが正しい値であるかどうかをテストしましたD = [list(range(100)), list(range(10, 110)), list(range(20, 120))]。コードはうまく機能します。

于 2013-07-11T16:29:22.713 に答える