不规则matplotlib日期x轴标签?
我目前在matplotlib中有以下格式的日期x轴标签: “…,10月8日,11月8日,12月8日,1月9日,2月9日,3月9日,…” 是否可以只显示每年1月份的年份号不规则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
“…,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()