Akimi_Usami 2022-08-01 12:31 采纳率: 100%
浏览 122
已结题

用matplotlib的monthlocator()绘制的月度时间横坐标如何修改?

如图,横轴是一组时间序列的日期,用matplotlib.dates的monthlocator('%m')表示为月,纵轴是时间序列的值。结果在12月后面多了一个1月,而且怎么删也删不掉,包括设置monthlocator的内部参数bymonthday也没用。于是我怀疑是数据的问题,但是数据看上去也很正常。求问如何把最后一个01删掉?

代码:

fig = plt.figure(figsize = [10, 5])
ax = fig.add_subplot(1, 1, 1)
ax.plot(df_2.loc[:, '2022'], color = 'red', linestyle = 'solid', label = '2022')
ax.plot(df_2.loc[:, '2021'], color = 'grey', linestyle = 'solid', label = '2021')
ax.plot(df_2.loc[:, '2020'], color = 'pink', linestyle = 'dashed', label = '2020')
ax.plot(df_2.loc[:, '2019'], color = 'black', linestyle = 'dashed', label = '2019')
plt.xticks(rotation='horizontal')
ax.xaxis.set_major_locator(MonthLocator())
ax.xaxis.set_major_formatter(DateFormatter('%m'))
ax.set_ylim([0, 19000])
plt.figtext(0.85, 0.825, df_type, fontsize = 'large',
horizontalalignment = 'right',
verticalalignment = 'top')
plt.figtext(0.115, 0.925, '万吨', fontsize = 'large',
horizontalalignment = 'right',
verticalalignment = 'top')
ax.legend(loc = 'best', bbox_to_anchor = (0.75, 1.095), borderpad=0.5, labelspacing=0.5, ncol = 4)

成图:

img

下面是数据:

img

  • 写回答

6条回答 默认 最新

  • herosunly Python领域优质创作者 2022-08-01 13:18
    关注

    把下列代码换成里面的代码试试:
    ax.xaxis.set_major_locator(MonthLocator())
    ax.xaxis.set_major_formatter(DateFormatter('%m'))

    #Add to plot settings:
    ax.set_xlim(np.datetime64('1970-01-01'), np.datetime64('1970-12-31'))
    ax.xaxis.set_major_locator(MonthLocator(bymonthday=1))
    ax.xaxis.set_major_formatter(md.DateFormatter('%b'))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 8月10日
  • 已采纳回答 8月2日
  • 请采纳用户回复 8月1日
  • 创建了问题 8月1日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?