求助帖plt.axvline报错
x轴设置为时间,输出报错Failed to convert value(s) to axis units: '2021-08-25 12:00:00'
代码如下
import pandas as pd
import datetime
from datetime import datetime
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ['SimHei']
df = pd.read_excel('D:\测试.xlsx',sheet_name = '1',value = 'False')
fig = plt.figure(figsize = (12,7),dpi=400)
#fig = plt.figure()
x = df['日期时间']
x2 =df
y1 = df['静电除尘']
plt.plot(x,y1,color = 'blue')
plt.tick_params(labelsize=11)
plt.axvline(x='2021-08-25 12:00:00',color='r',linestyle='--',lw=2)
plt.axhline(y=1700,c='r',lw=2)
plt.xticks(rotation=60,size=8)
求助各路大佬,我这个axvline中的x参数是哪里出了问题,应该怎么改才能让以时间为x轴的图表生成竖直辅助线 本帖最后由 suchocolate 于 2021-9-26 11:59 编辑
官网说axvline的x需要是浮点数,估计matlib在尝试转换成浮点的时候报的错。
https://matplotlib.org/3.3.1/api/_as_gen/matplotlib.pyplot.axvline.html?highlight=axvline#matplotlib.pyplot.axvline 本帖最后由 阿奇_o 于 2021-9-26 12:12 编辑
试一下 转成 和 df['日期时间'] 相同的数据类型,如 datetime类型的对象
附:
我试了一下,如果是Timestamp类型的数据,如Timestamp('2021-09-01 00:00:00'),可以这样写
fig = df.plot()
plt.axvline(x='20210905', linewidth=1, color='r', linestyle='dashed')
plt.axvline(x='2021-09-13', linewidth=1, color='b', linestyle='dashed')
plt.axvline(x='2021-09-15 00:00:00', linewidth=1, color='g', linestyle='dashed')
其他的类型,你也可以试试,只要能转换就行。
阿奇_o 发表于 2021-9-26 11:40
试一下 转成 和 df['日期时间'] 相同的数据类型,如 datetime类型的对象
附:
Failed to convert value(s) to axis units: '2021-09-15 00:00:00'
还是报了这个错
非常感谢! 已解决,最后是使用数组解决的,算是偷了个懒
plt.axvline(x = x,color='r',linestyle='--',lw=2)
页:
[1]