将日期时间显示为xtick的日期

时间:2017-07-05 06:00:39

标签: python matplotlib plot

我有以下示例代码:

import pandas as pd
import matplotlib.pyplot as plt
dates = ['01/02/2007 00:02:00','01/02/2007 00:04:00','02/02/2007 
00:02:00','02/02/2007 00:04:00']
x = pd.to_datetime(dates, format='%d/%m/%Y %H:%M:%S')
y = [0.32,0.33,0.32,0.34]
plt.plot(x,y)

我想让xtick成为2007年2月1日的'Thu'和2007年2月2日的'Fri'。最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

关键的想法是从DateTime对象获取dayofweek,例如:x.dayofweek。这将返回数字dayofweek。我们可以轻松获得相应的名称np.array(['Mon','Tue','Wed','Thu','Fri','Sat', 'Sun'])[x.dayofweek]

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
dates = ['01/02/2007 00:02:00','01/02/2007 00:04:00','02/02/2007 00:02:00','02/02/2007 00:04:00']
x = pd.to_datetime(dates, format='%d/%m/%Y %H:%M:%S')
x_d = np.array(['Mon','Tue','Wed','Thu','Fri','Sat', 'Sun'])[x.dayofweek]
y = [0.32,0.33,0.32,0.34]
ser = pd.Series(y, index=x_d)
ser.plot()

enter image description here

答案 1 :(得分:1)

一种可能的解决方案是更改X轴格式:

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

dates = ['01/02/2007 00:02:00','01/02/2007 00:04:00','02/02/2007 00:02:00','02/02/2007 00:04:00']
x = pd.to_datetime(dates, format='%d/%m/%Y %H:%M:%S')
y = [0.32,0.33,0.32,0.34]

fig, ax = plt.subplots()

ax.plot(x,y)

yearsFmt = mdates.DateFormatter('%a')
ax.xaxis.set_major_formatter(yearsFmt)
plt.show()

enter image description here