在matplotlib中使用折线图时,用X轴替换X轴上的数字

时间:2015-02-18 22:33:53

标签: python matplotlib

我正在绘制一个带数字数组的直线图

fig, ax = plt.subplots()
ax.plot(x, 0 * x)

x是数组:

array([  0,1,2,3,4,5,6,7,8,9,10 ])

这条线很好,但我想在x轴上显示日期..我想要关联 每个数字的日期,并将其用作我的x刻度。

有人可以提出建议吗?

1 个答案:

答案 0 :(得分:2)

您可以控制任何值的the ticker format using a ticker.FuncFormatter

import matplotlib.ticker as ticker
def todate(x, pos, today=DT.date.today()):
    return today+DT.timedelta(days=x)
fmt = ticker.FuncFormatter(todate)
ax.xaxis.set_major_formatter(fmt)

如果日期过于拥挤,您可以旋转它们:

fig.autofmt_xdate(rotation=45)  

例如,

import datetime as DT
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as ticker

x = np.array([0,1,2,3,4,5,6,7,8,9,10])

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x, x**2*np.exp(-x))
def todate(x, pos, today=DT.date.today()):
    return today+DT.timedelta(days=x)
fmt = ticker.FuncFormatter(todate)
ax.xaxis.set_major_formatter(fmt)
fig.autofmt_xdate(rotation=45)  
plt.show()

产量

enter image description here