2017-06-06 8 views
0

私はPythonを一度も使用していません。私はこれを最初の割り当てとして行う必要があります。この時点までには3時間かかりました。本当に助けが必要です。matplotlibを使用してX軸で年を表示する方法は?

私はいくつかの数字の1次元配列を持っています。私はtimeseriesプロットをしなければならない。

import datetime 
import matplotlib.pyplot as plt 
import numpy as np 

data = np.load("abnormal.npy") 

x = np.array(range(1,len(data)+1)) 
y = np.load("abnormal.npy") 

plt.plot(x,y) 
plt.show()  

plot

あなたは今、X軸を見ることができるように私の配列の配列範囲です。 これを日時2002-2012に変更するにはどうすればよいですか?あなただけのこの操作を行う好き

+1

持っていますか?今、あなたのxは1から4000までの数字の配列であり、それがプロットされています。あなたのプロットの目盛りのラベルを変更したいだけなら、それを行うこともできますが、いつ何を知る必要があります。もっと多くの情報が役に立つでしょう。 –

+0

Xは2002年1月1日以来の日なので、2012-12-31まで必要ですが、XとYの配列の長さは一致する必要がありますか? – rmths01

+0

はい、長さが一致している必要があります。 –

答えて

0

import pandas as pd 

y_len = 100 
x = pd.date_range("20020101", freq='D', periods=y_len).strftime("%Y-%m-%d").tolist() 

あなたは

y_len = len(data) 

サンプルコードが出力される質問のためにあなただけの、y_lenにY軸のな長さとポイントを得る必要がある、

['2002-01-01', '2002-01-02', '2002-01-03', '2002-01-04', '2002-01-05', '2002-01-06', '2002-01-07', '2002-01-08', '2002-01-09', '2002-01-10', '2002-01-11', '2002-01-12', '2002-01-13', '2002-01-14', '2002-01-15', '2002-01-16', '2002-01-17', '2002-01-18', '2002-01-19', '2002-01-20', '2002-01-21', '2002-01-22', '2002-01-23', '2002-01-24', '2002-01-25', '2002-01-26', '2002-01-27', '2002-01-28', '2002-01-29', '2002-01-30', '2002-01-31', '2002-02-01', '2002-02-02', '2002-02-03', '2002-02-04', '2002-02-05', '2002-02-06', '2002-02-07', '2002-02-08', '2002-02-09', '2002-02-10', '2002-02-11', '2002-02-12', '2002-02-13', '2002-02-14', '2002-02-15', '2002-02-16', '2002-02-17', '2002-02-18', '2002-02-19', '2002-02-20', '2002-02-21', '2002-02-22', '2002-02-23', '2002-02-24', '2002-02-25', '2002-02-26', '2002-02-27', '2002-02-28', '2002-03-01', '2002-03-02', '2002-03-03', '2002-03-04', '2002-03-05', '2002-03-06', '2002-03-07', '2002-03-08', '2002-03-09', '2002-03-10', '2002-03-11', '2002-03-12', '2002-03-13', '2002-03-14', '2002-03-15', '2002-03-16', '2002-03-17', '2002-03-18', '2002-03-19', '2002-03-20', '2002-03-21', '2002-03-22', '2002-03-23', '2002-03-24', '2002-03-25', '2002-03-26', '2002-03-27', '2002-03-28', '2002-03-29', '2002-03-30', '2002-03-31', '2002-04-01', '2002-04-02', '2002-04-03', '2002-04-04', '2002-04-05', '2002-04-06', '2002-04-07', '2002-04-08', '2002-04-09', '2002-04-10'] 
+1

私はそのような、2002年から2002年のようなラベルを持っています しかし、私はこの答えのようにすることはできませんXとY配列の長さが一致しないため。 私は特別な日時関数が必要だと思いますが、どうすればいいのか分かりません。 – rmths01

+0

@CynthiaGS私が最初に質問に答えるとき、記述はとてもプールです、所有者が質問を更新するとき、私はもう一度答えを更新しました。 – saul

1

データ配列と同じ長さの配列を持つ必要があります。たとえばあなたは

start = datetime.date(2002, 01, 01) 
dates = [start + datetime.timedelta(n) for n in range(len(y))] 

完全な例として、この配列を作成することができ、一日あたり1データポイントがあることを知っている:あなたは年がどこかに保存

import datetime 
import matplotlib.pyplot as plt 
import numpy as np; np.random.seed(1) 

y = np.cumsum(np.random.normal(size=4000)) 

start = datetime.date(2002, 01, 01) 
dates = [start + datetime.timedelta(n) for n in range(len(y))] 

plt.plot(dates,y) 
plt.show() 

enter image description here

関連する問題