質問: l[:-1].split(',') x += [str(data[0])] y += [int(data[1])] plt.plot(x, y) plt.title(“Sample”) plt.xlabel("DATE") plt.ylabel("ATAI") plt.grid(True) plt.show() 上記のpythonを書いたのですが、グラフのx軸のdate(日付)が x軸=414.0 414.5 415.0 415.5 416.0 416.5 41.70 y軸=2.0 2.5 3.0 3.5 ... test.txtは以下のような形式です。 0414,2 0415,4 0416,5 0417,5 と0.5刻みにグラフが作成されます。 y軸は値なのでこのままでも良いのですが x軸の日付は0414,0416という形式で出力させたいです。 (いずれはYYYY:MMにしてみたいです。) test.txtの最初のYYYYを文字列として配列に格納するにはどのようにしたら良いでしょうか。
回答: 時系列データとして表示したい場合は、時系列データ用の Locatorと FormatterをX軸に設定してください。 > > matplotlib.datas.Locator/Formatter > > > また、配列には文字列ではなく、Datetime型にて格納しております。 サンプル ``` from datetime import datetime import matplotlib.pyplot as plt import matplotlib.dates as mdates # DATA読み込み x, y = ], [] for l in open('test.txt').readlines(): data = l[:-1].split(',') x += [datetime.strptime(data[0], "%m%d")] #datetime形式 y += [int(data[1])] # 時系列用のLocator/Formatterを定義 xfmt = mdates.DateFormatter("%m/%d") xloc = mdates.DayLocator() ax = plt.subplot() ax.plot(x, y) ax.xaxis.set_major_locator(xloc) ax.xaxis.set_major_formatter(xfmt) ax.set_title("Sample") ax.set_xlabel("DATE") ax.set_ylabel("ATAI") ax.grid(True) plt.show() ``` ![イメージ説明 上のサンプルでは ・ Locatorとして DayLocator() (日間隔)を指定 ・ Formatterとして DateFormatter("%m/%d") を設定 しております。 時系列データ用のLocatorやFormatterに関しては を参考にしてください。