无法使用matplotlib处理时间序列图中缺少的值

2024-09-27 04:19:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用下面的示例代码创建时间序列图,但是当我把'nan'作为缺失值时,它会绘制注释,但是如果中间没有缺失值,它就可以正常工作

import matplotlib.pyplot as plot   
import numpy as np   
import datetime 

date= [[2014,01,01], [2014,02,02], [2014,03,01], [2014,04,01],   [2014,05,21]]

for i in range (len(date)):

   dtf.append(datetime.date(int(datet[i][1]),int(datet[i][1]),int(datet[i][2])).toordinal())    

days= np.array(dtf)

value =[ nan  nan  35  nan  25]  #not working

# work fine  value =[ 20  21  35  24  25]

# not working value =[ 20  21  35  nan  25] its joins line upto 35 only

ax.plot_date(x=days, y=value, fmt="r-")
plot.show()

绘图应在缺少值处中断,并继续下一个值 请告诉我怎么做


Tags: importdatetimedateplotvalueasnpnot
1条回答
网友
1楼 · 发布于 2024-09-27 04:19:25

一条线连接两点。如果两点中有一点是nan,则无法绘制,因此无法绘制点与nan之间的线。
因此,用nan值绘制数组将只显示两个点都存在的线。 这是基本逻辑,即使试图用笔和纸绘制数据,也会发生这种情况

import matplotlib.pyplot as plt
import numpy as np

nan = np.nan
y = [2,3,2,nan,2,3,nan,3,nan,4,3,nan,2,1]
x = np.arange(len(y))

fig, ax = plt.subplots()
ax.plot(x,y, marker="o")
ax.grid()
ax.set_xticks(x)
for i in x:
    if np.isnan(y[i]):
        ax.text(i, 1.4, "nan", ha="center", rotation=90, fontsize=16)
plt.show()

enter image description here

相关问题 更多 >

    热门问题