如何在Matplotlib中限制日期类型X轴的最大值为2012年?
解决Matplotlib X轴日期范围设置问题
为啥会跳去1975年?
你直接传整数2012当X轴上限,Matplotlib会把它当成Unix时间戳——也就是从1970年1月1日开始算的秒数,2012秒才刚到1970年当天的凌晨,所以图表直接偏移到1975年附近了。必须传Matplotlib能识别的日期对象或者格式值才行。
搞定方法
1. 用datetime模块造日期对象
先导入datetime,把2012年的目标日期(比如年初或年末)转成日期对象,再传给xlim:
import datetime import matplotlib.pyplot as plt # 假设你已经画好图了,加这行设置上限 plt.xlim(None, datetime.datetime(2012, 1, 1)) plt.show()
要是想设成2012年最后一天,就把参数改成datetime.datetime(2012, 12, 31)。
2. 用Matplotlib自带的日期转换工具
如果你的X轴数据是用matplotlib.dates处理的,也可以用date2num转成Matplotlib内部的数值格式:
import datetime import matplotlib.dates as mdates import matplotlib.pyplot as plt # 把2012年1月1日转成Matplotlib能识别的数值 max_date = mdates.date2num(datetime.datetime(2012, 1, 1)) plt.xlim(None, max_date) plt.show()
3. 直接传字符串日期(部分场景能用)
要是你的X轴已经正确解析了日期格式,直接传字符串形式的日期也可以:
plt.xlim(None, '2012-01-01') plt.show()
确认设置生效
改完之后可以跑一行plt.gca().get_xlim(),看看当前X轴的范围——最小值应该还是你原始数据的最早日期,最大值就是2012年的日期了。
内容的提问来源于stack exchange,提问作者B Kazimy
相关产品推荐
相关产品推荐

