bjergsent 发表于 2021-9-26 09:08:56

求助帖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 10:37:24

本帖最后由 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 11:40:43

本帖最后由 阿奇_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')

其他的类型,你也可以试试,只要能转换就行。


bjergsent 发表于 2021-9-27 08:35:43

阿奇_o 发表于 2021-9-26 11:40
试一下 转成 和 df['日期时间'] 相同的数据类型,如 datetime类型的对象

附:


Failed to convert value(s) to axis units: '2021-09-15 00:00:00'
还是报了这个错
非常感谢!

bjergsent 发表于 2021-9-27 08:36:39

已解决,最后是使用数组解决的,算是偷了个懒
plt.axvline(x = x,color='r',linestyle='--',lw=2)
页: [1]
查看完整版本: 求助帖plt.axvline报错