如何解决如何在 Matplotlib 中设置月末的刻度线
我有一个每个月末的日期列表,我希望我的绘图的网格线和标签与这些日期一致。目前我只能在月初绘制图表。有没有办法强制 Matplotlib 在其图表中使用月末值?
import matplotlib.pyplot as plt
from datetime import datetime
from matplotlib.dates import MonthLocator
from matplotlib.dates import DateFormatter
dts = [datetime(2020,11,30),datetime(2020,12,31),datetime(2021,1,2,28),3,4,5,6,7,8,9,10,datetime(2022,]
vals = [2000,2500,3000,4000,4500,6000,5000]
figsize=(3,6)
fig,ax = plt.subplots(figsize=figsize)
ax.xaxis.set_major_locator(MonthLocator((3,12)))
fmt = DateFormatter("%Y-%m")
ax.xaxis.set_major_formatter(fmt)
ax.plot(dts,vals,color = 'blue')
ax.grid(True)
plt.show()
解决方法
一种选择是手动或动态set_ticks()
:
ax.set_xticks([datetime(2020,12,31),datetime(2021,3,6,30),9,31)])
或更好:
ax.set_xticks(dts[1::3]) # this uses every third element starting with second element
完整代码:
import matplotlib.pyplot as plt
from datetime import datetime
from matplotlib.dates import MonthLocator
from matplotlib.dates import DateFormatter
dts = [datetime(2020,11,datetime(2020,1,2,28),4,5,7,8,10,datetime(2022,]
vals = [2000,2500,3000,4000,4500,6000,5000]
figsize=(12,6)
fig,ax = plt.subplots(figsize=figsize)
fmt = DateFormatter("%Y-%m-%d")
ax.xaxis.set_major_formatter(fmt)
ax.set_xticks([datetime(2020,31)])
ax.set_xticks(dts[1::3])
ax.plot(dts,vals,color = 'blue')
ax.grid(True)
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。