不规则的matplotlib日期x轴标签?

时间:2010-02-07 07:22:37

标签: matplotlib

我目前在matplotlib中使用以下格式的日期x轴标签:

'...,2008年10月8日,08年12月8日,09年1月9日,09年2月9日,...'

是否可以仅显示每年1月份的年份数字?

'...,10月,11月,12月,1月9日,2月,3月,......'

2 个答案:

答案 0 :(得分:3)

跟随Jouni的回答这是一个快速而肮脏的例子:

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import random, datetime

# generator to just get 20 dates += 30 days
def nextDate():
      date = datetime.date(2008, 12,01)
      while 1:
        date += datetime.timedelta(days=30)
        yield (date)

nd = nextDate()
some_dates = [nd.next() for i in range(0,20)] #get 20 dates
ys = [random.randint(1,100) for i in range(0,20)] # get dummy y data

plt.plot([i for i in range(0,20)],ys) #plot dummy data

def format_date(x, pos=None):
    date = some_dates[int(x)]
    if date.month == 1: 
      return date.strftime('%b %Y')
    else: return date.strftime('%b')

xAxis = plt.axes().xaxis
xAxis.set_major_locator(ticker.FixedLocator([i for i in range(0,20)])) #show all 20 dates on xaxis
xAxis.set_major_formatter(ticker.FuncFormatter(format_date)) # custom format
for tl in xAxis.get_ticklabels():
      tl.set_fontsize(10)
      tl.set_rotation(30)
      # rotate and pretty up

plt.show()

alt text http://www.imagechicken.com/uploads/1265573633082937000.png

答案 1 :(得分:0)

使用自定义格式化程序,如下例所示:

http://matplotlib.sourceforge.net/examples/api/date_index_formatter.html