2013-09-24 2 views
0

Y 축에 플롯하려는 값을 포함하는 bidimensionnal 배열과 X 축에 플롯하려는 datetime 값의 bidimensionnal 배열이 있습니다. 해당 배열에서 날짜에 대해 두 줄의 값을 가져옵니다. 그러나이 구조는 그대로 사용됩니다. 선 그래프와 다른 종류의 그래프가 있기 때문에 예상대로 작동하지 않습니다. x 축에 대한bidemensionnal 배열의 플롯 값

값 (날짜) : y 축에 대한

[[datetime.datetime(2011, 1, 1, 0, 0, 25, 135000), datetime.datetime(2011, 2, 1, 0, 0, 57, 386000), 
datetime.datetime(2011, 3, 1, 0, 0, 59, 579000), datetime.datetime(2011, 4, 1, 0, 0, 27, 676000), 
datetime.datetime(2011, 5, 1, 0, 0, 25, 135000), datetime.datetime(2011, 6, 1, 0, 0, 26, 414000), 
datetime.datetime(2011, 7, 1, 0, 0, 28, 145000), datetime.datetime(2011, 8, 1, 0, 0, 26, 432000), 
datetime.datetime(2011, 9, 1, 0, 0, 27, 301000), datetime.datetime(2011, 10, 1, 0, 0, 27, 643000), 
datetime.datetime(2011, 11, 1, 0, 0, 27, 673000), datetime.datetime(2011, 12, 1, 0, 0, 28, 294000)], 
[datetime.datetime(2011, 1, 1, 0, 0, 25, 135000), datetime.datetime(2011, 2, 1, 0, 0, 57, 386000), 
datetime.datetime(2011, 3, 1, 0, 0, 59, 579000), datetime.datetime(2011, 4, 1, 0, 0, 27, 676000), 
datetime.datetime(2011, 5, 1, 0, 0, 25, 135000), datetime.datetime(2011, 6, 1, 0, 0, 26, 414000), 
datetime.datetime(2011, 7, 1, 0, 0, 28, 145000), datetime.datetime(2011, 8, 1, 0, 0, 26, 432000), 
datetime.datetime(2011, 9, 1, 0, 0, 27, 301000), datetime.datetime(2011, 10, 1, 0, 0, 27, 643000), 
datetime.datetime(2011, 11, 1, 0, 0, 27, 673000), datetime.datetime(2011, 12, 1, 0, 0, 28, 294000)]] 

값 (최소, 최대) : 나는 이러한 구조를 이렇게 변환하는 방법에 대한 몇 가지 도움이 필요

[[-8.0, 19.0, 11.0, 6.0, 6.0, 6.0, 6.0, 6.0, 2.0, 2.0, 2.0, 2.0], 
[-12.0, -7.0, -6.0, -6.0, -6.0, -6.0, -6.0, -6.0, -6.0, -6.0, -7.0, -7.0]] 

날짜의 최소 및 최대 두 줄이 표시됩니다.

답변

1

같은 길이가 xy라는 두 개의 "bidimensional"배열을 가지고 있다면, 당신의 배열은 1 차원이있는 경우, 당신은 단순히

을 할 수있는, 일반적으로

import numpy as np 
import matplotlib.pyplot as plt 

# populate x and y arrays. 

x = np.array(x) 
y = np.array(y) 

fig = plt.figure() 
ax = fig.add_subplot(111) 

ax.plot(x[:,0], y[:,0], 'g-o') 
ax.plot(x[:,1], y[:,1], 'r-x') 

시도 당신의 배열 값의 두 개 이상의 세트가있는 경우, 당신은 할 수

ax.plot(x, y) 

for i in range(x.shape[-1]): 
    ax.plot(x[:,i], y[:,0]) 

표기법 x[:,n]에는 두 부분이 있습니다. :은 모든 행에서 데이터를 가져 오는 것을 의미하고 ,n은 각 행에서 n+1 (0은 첫 번째를 나타냄) 요소를 가져 오는 것을 의미합니다. 데이터가

[[date00, date01], 
[date10, date11], 
[date20, date21], 
... 
[dateN0, dateN1]] 

같은 구조로되어 있기 때문에 그렇게 x[:,0]가 첫 번째 열을 받아 x[:,1] 두 번째 열을합니다 작동합니다.

많은 차원의 큰 배열이있는 경우 x[dim0, dim1, ..., dimN]과 같은 각 배열을 인덱싱 할 수 있습니다. 예를 들어 치수가 patientID, sampleID, viral_load로 표시된 의료 데이터의 3 차원 배열이 있다고 가정하면 data[0, :, -1]을 수행하여 첫 번째 환자의 모든 샘플에서 마지막 바이러스로드 번호를 가져올 수 있습니다. data[0, :, :]을 해 환자의 샘플을 채취하십시오.

+0

감사합니다. 2 차원 또는 차원 1보다 우수한 차원 배열의 배열에 사용할 수 있도록 더 일반적인 방법이 있습니까? 루프를 시도했지만 그래프에 직선을 그렸습니다. – jerome

+0

수정 사항을 확인하십시오. 나는 너의 질문에 대답하려고 노력했다. – wflynny