在Matplotlib绘图时,有时会从文件中读取形如“2025/2/20”格式的日期数据,在读取了日期数据后,会通过Matplotlib.dates.strpdate2num()函数将日期格式变为浮点数进行绘制。
1 matplotlib.dates不再支持strpdate2num()函数
使用matplotlib.dates.strpdate2num()函数处理日期数据的代码如图1所示。
图1 使用matplotlib.dates.strpdate2num()函数处理日期数据的代码
运行以上代码后,程序报错信息如图2所示。
图2 程序报错信息
报错信息为“matplotlib.dates”模块不包含strpdate2num()函数。
2 解决方法
使用“matplotlib.dates”模块中的data2num()函数进行转换,由于该函数的参数是datetime.datetime类型,因此首先要将“2025/2/20”格式的日期数据转换为datetime.datetime类型。
2.1 将日期字符串转换为datetime.datetime类型
使用图3所示代码,可以将日期字符串转换为datetime.datetime类型。
图3 日期字符串转换为datetime.datetime类型的代码
datetime.datetime.strptime()函数的第一个参数表示要转换的日期字符串,第二个参数表示日期的格式,%Y表示年,%m表示月份,%d表示日。该函数的返回值是datetime.datetime类型,保存在变量date1中。、
注意1 导入模块的代码如图4所示。
图4 导入模块的代码
2.2 将datetime.datetime类型转换为浮点型
通过“matplotlib.dates”模块中的data2num()函数将datetime.datetime类型转换为浮点型的代码如图5所示。
图5 将datetime.datetime类型转换为浮点型的代码
data2num()函数的参数是图3得到的datetime.datetime类型的日期,返回值是该日期距离1970-01-01 00:00:00的天数。