如何修改Matplotlib中X轴刻度间隔及指定显示时间区间?
解决方案
你之前用plt.xticks没生效的核心原因是:从FRED获取的失业数据索引是datetime时间类型,不是单纯的年份数值,直接传入年份列表自然无法匹配时间轴刻度。下面分两部分解决你的问题:
1. 仅显示2014-2019年的时间区间
最直接的方式是先对数据做时间切片,再绘图:
# 筛选2014到2019年的数据(支持月度/日度等细分频率) filtered_data = Unemp_data.loc['2014':'2019'] # 绘制图表 filtered_data.plot(figsize=(15,6), title="unemployment rate", lw=1.5)
2. 将X轴刻度调整为5年间隔
需要借助matplotlib.dates模块的工具类来处理时间轴刻度,具体代码如下:
import matplotlib.pyplot as plt import matplotlib.dates as mdates # 绘制原图并获取坐标轴对象 ax = Unemp_data.plot(figsize=(15,6), title="unemployment rate", lw=1.5) # 设置X轴主刻度为每5年一个 ax.xaxis.set_major_locator(mdates.YearLocator(5)) # 设置刻度显示格式为纯年份(如2000、2005) ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y')) # 旋转X轴标签避免重叠,优化布局 plt.xticks(rotation=45) plt.tight_layout() plt.show()
如果要同时实现区间筛选和刻度调整,把两种逻辑结合即可:
import matplotlib.pyplot as plt import matplotlib.dates as mdates filtered_data = Unemp_data.loc['2014':'2019'] ax = filtered_data.plot(figsize=(15,6), title="unemployment rate", lw=1.5) ax.xaxis.set_major_locator(mdates.YearLocator(5)) ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y')) plt.xticks(rotation=45) plt.tight_layout() plt.show()
内容的提问来源于stack exchange,提问作者daniel evan300
相关产品推荐
相关产品推荐

