私は散布図を作成しようとしていましたが、私のx軸は1年の各日である必要があります。最初にデータファイルを読み込んで、19800801のような整数で満たされた日付列を取得します。したがって、次のように書くことで、このinteger
をdatetime
に変換します。
datetimes_0 = datetime.strptime(str(dates_pitts[0]), '%Y%m%d')
次に、次のように記述して、datetimeオブジェクトから月と日のみを抽出します。
s = datetimes_0.strftime("%m%d")
strftime
からの戻り値がdatetimeオブジェクトではなくなったので、次のようにしてdatetimeオブジェクトに変換してみました。
s0= datetime.strptime(s, '%m%d')
しかし、月と日だけを与えるのではなく、年、月、日全体を返すことができます。私の質問は、19800801のような指定された整数から、月と日(両方)のみのdatetimeオブジェクトをどのように抽出するのですか?
時間ベースのデータをmatplotlibにプロットする場合、通常の方法は、最初に日付をdatatime
オブジェクトに変換し、次にmatplotlibにこれらの値を date2num()
関数。次に、matplotlibに、フォーマッター(この場合は DateFormatter()
)を使用してx軸の目盛りをフォーマットする方法を指示できます。したがって、たとえば、ティックごとに月と日を表示するように選択できます。
この例では、下の行に日を入れて月を表示します。
_from matplotlib import pyplot, dates
from datetime import datetime
data = [("19800801", 16), ("19800810", 10), ("19800901", 15), ("19800905", 14)]
xaxis = [datetime.strptime(d, '%Y%m%d') for d, v in data]
yaxis = [v for d, v in data]
ax = pyplot.gca()
xaxis = dates.date2num(xaxis) # Convert to maplotlib format
hfmt = dates.DateFormatter('%m\n%d')
ax.xaxis.set_major_formatter(hfmt)
pyplot.xlabel('Date')
pyplot.ylabel('Value')
pyplot.plot(xaxis, yaxis)
pyplot.tight_layout()
pyplot.show()
_
これは次のように表示されます。
次に、これを拡張してDayLocator()
を使用し、matplotlibに次のようにxticksを正確な日の場所に配置するように指示できます。
_ax.xaxis.set_major_locator(dates.DayLocator())
_
あなたに与える:
これは整数を受け取り(有効なエポックであると想定)、python datetimeオブジェクトに変換します:
>>> import datetime
>>> date = datetime.datetime.fromtimestamp(19800801)
>>> print date.month
8
>>> print date.day
17
またはstrftimeを使用(日付時刻オブジェクトではなく文字列を返します):
>>> datetime.datetime.fromtimestamp(19800801).strftime('%m%d')
'0817'
月と日を単一の整数として出力する:
>>> int(datetime.datetime.fromtimestamp(19800801).strftime('%m%d'))
817