我目前在matplotlib中使用以下格式的日期x轴标签:
'...,2008年10月8日,08年12月8日,09年1月9日,09年2月9日,...'
是否可以仅显示每年1月份的年份数字?
'...,10月,11月,12月,1月9日,2月,3月,......'
答案 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