1

datetime でインデックス付けされた 20 行を含む Pandas DataFrame があります。

df.tail()
                     units       value
time        
2013-08-30T13:01:12  vehicles/h  662
2013-08-30T13:06:12  vehicles/h  701
2013-08-30T13:11:13  vehicles/h  477
2013-08-30T13:16:13  vehicles/h  179
2013-08-30T13:21:13  vehicles/h  576

次のように、matplotlib を使用してプロットしています。

ax = ls.plot(color='CC00CC')
# Only show hours and minutes
ax.set_xticklabels(
    [dt.strftime("%H:%M:%S") for dt in ls.index.to_datetime()])
plt.setp(ax.get_yticklabels(), fontsize=8)
ax.set_ylabel("Counts")
ax.set_xlabel("5-minute intervals on %s" % (datetime.datetime.today().strftime("%d/%m/%Y")))
plt.title("Vehicles")
plt.tight_layout()

次のプロットが得られます。

ここに画像の説明を入力

ただし、x ティックとして表示されているのは最初の数回だけです。右端の x ティックには 12:21:13 というラベルを付け、中間のティックをいくつか表示する必要があります。私は何を間違えましたか?

4

1 に答える 1

2

実際には、time列を DateTimeIndex に適切に変換していないことがわかりました。それを正しく行うと修正されました:

私の時間列は次のようになります。

df['time'][0]
>> u'2014-03-04T19:01:11'

次のような変換:

# convert to DateTimeIndex, convert to UTC, and sort
df['time'] = pd.to_datetime(df['time'], format="%Y-%m-%dT%H:%M:%S")
df = df.set_index('time').tz_convert('UTC').sort()
于 2013-08-30T12:52:40.543 に答える