不规则matplotlib日期x轴标签?

不规则matplotlib日期x轴标签?,matplotlib,Matplotlib,我目前在matplotlib中有以下格式的日期x轴标签: “…,10月8日,11月8日,12月8日,1月9日,2月9日,3月9日,…” 是否可以只显示每年1月份的年份号 “…,10月,11月,12月,1月9日,2月,3月,…”使用自定义格式化程序,如本例所示: 继Jouni的回答之后,这里有一个快速而肮脏的例子: import matplotlib.pyplot as plt import matplotlib.ticker as ticker import random, datetime

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

“…,10月8日,11月8日,12月8日,1月9日,2月9日,3月9日,…”

是否可以只显示每年1月份的年份号


“…,10月,11月,12月,1月9日,2月,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()