2013-07-11 3 views
0

두 개의 독립 변수가 시간에 따라 어떻게 변하는지를 한 그래프에 표시하여 비교하고 싶습니다. 세 변수는 모두 배열 형식이며, 텍스트 파일에서 가져옵니다. 이것은 내가 지금까지 가지고 무엇을 :하나의 그래프에서 또 다른 배열에 대해 2 개의 배열을 그려야합니다.

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

문제는, 그것은 작동하지 않습니다, 나는 이유를 알지 못한다. 두 함수를 그래프로 표시하는 방법에 대한 자습서에서 얻었습니다.

답변

0

우리는 함수가 아닌 데이터를 플로팅합니다. 따라서 A을 패스하면 B이 잘못되었습니다. 당신의 D 예를 D = [list(range(100)), list(range(10, 110)), list(range(20, 120))]를 들어, 우측 값이면 내가 테스트 한

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

: 나는 당신이해야 할 것이라고 생각합니다. 코드가 잘 작동합니다.

+0

건배, 치료를 받았다. – user2546315

1

편집 : 문제는 데이터 추출 방법과 관련이 있다고 생각합니다. A=f1B=f2으로 전화 할 때 f1f2을 구성한 방식에 맞게 A=f1(t)B=f2(t)을 작성해야합니다. 그러나, 왜 그런 식으로합니까?

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