2016-05-02 2 views
0

こんにちは、netCDFファイルから抽出したいくつかのデータから次のプロットを作成しました。 Plot created夜間配列を定数で除算して曜日を作る

# import netCDF 

import matplotlib.pyplot as plt 
import numpy as np 
import netCDF4 
from pylab import rcParams 

f = netCDF4.Dataset('data', 'r') 
v = f.variables['store_Bio'][0:27, 0:23, 0] 


# Reshape array 
r = np.reshape(v, 621) 

# plot asthetics 
plt.plot(r, linestyle='-', linewidth=5.0, c='c') 
plt.xlabel('Date') 
plt.ylabel('Average Biogenic Emissions (kg/hour/per cell area)') 
plt.title('Average Biogenic Emissions March 2013') 
plt.ylim(0, 350) 
plt.xlim(0, 621) 

# Annotate plot 
plt.annotate('Daytime Maximum', xy=(72, 140), xytext=(24, 200), 
      arrowprops=dict(facecolor='black', shrink=0.05, 
          width=0.1, headwidth=10)) 

# change plot size 
rcParams['figure.figsize'] = 25, 5 

# change ticks 
plt.xticks(range(0, 621, 12), [str(i) for i in range(0, 621, 12)]) 
plt.yticks(range(0, 350, 50), [str(i) for i in range(0, 350, 50)]) 

plt.show() 

は、しかし、私はx軸は日数の代わりに、時間を表示し、他のすべてが同じままであるように、私は24で日付だけを分割する可能性がどのように思っていた:私は、次のスクリプトを使用していました。どんな助けでも大歓迎です!

+0

日付は 'r'の最初の列にあると思いますので、' date = r [: 、0]/24.'、 'plot(date、r [:、1])'となります。 –

+0

コメントありがとう!私はこれを試して、 '配列のインデックスが多すぎます'というエラーを取得します。 –

答えて

0

を使用することができ1Dは、それがどんなタイムスタンプを持っていないので、x軸は、あなたの配列のちょうどランニングインデックスです。日付情報が必要な場合は、CDFファイルから読み込むか、時間軸を自分で作成する必要があります。

# Reshape array 
r = np.reshape(v, 621) 
date = np.arange(r.shape[0]) # assume that delta time between data is 1 hour 
date1 = date/24. # use days instead of hours 


# plot asthetics 
plt.plot(date1, r, linestyle='-', linewidth=5.0, c='c') 
0

あなたのデータのでrベクトル概念

import numpy as np 

In [31]: a=np.arange(0,621,12) 

In [32]: a/24.0 
Out[32]: 
array([ 0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 
     4.5, 5. , 5.5, 6. , 6.5, 7. , 7.5, 8. , 8.5, 
     9. , 9.5, 10. , 10.5, 11. , 11.5, 12. , 12.5, 13. , 
     13.5, 14. , 14.5, 15. , 15.5, 16. , 16.5, 17. , 17.5, 
     18. , 18.5, 19. , 19.5, 20. , 20.5, 21. , 21.5, 22. , 
     22.5, 23. , 23.5, 24. , 24.5, 25. , 25.5]) 
+0

返信ありがとう、しかし、私はどのように私の配列を上記のコーディングに使用するのですか? –

+0

@MatMoonあなたは 'r = np.reshape(v、621)'この配列を参照していますか? – Pavan

+0

これは私が話しているものです:)あなたの方法を試してみるとちょっと傾きのあるラインが表示されますので –

関連する問題