如何让Matplotlib忽略NaN数据且不绘制补全缺失段的折线?
解决方案:自动忽略NaN并断开折线(Matplotlib/Plotly)
Matplotlib 实现
Matplotlib 的 plot 函数原生就会处理 NaN 值——当 Y 数组中出现 NaN 时,它会自动在该位置断开折线,不会连接前后的有效数据点,完全不用手动拆分数组。直接沿用原本的绘图逻辑即可:
示例代码:
import matplotlib.pyplot as plt import numpy as np x = [0,1,2,3,4,5] y = [3,6,2,np.nan,3,7] # 包含NaN值 plt.plot(x, y) plt.show()
运行后,折线会在对应 NaN 的位置(x=3)断开,前三个点(0、1、2)连成线段,后两个点(4、5)连成线段,中间无连接。
Plotly 实现
Plotly 同样原生支持 NaN 值的自动处理,折线会在 NaN 所在位置自然断开,无需额外操作:
Plotly Express 方式:
import plotly.express as px import numpy as np x = [0,1,2,3,4,5] y = [3,6,2,np.nan,3,7] fig = px.line(x=x, y=y) fig.show()
Plotly Graph Objects 方式:
import plotly.graph_objects as go import numpy as np x = [0,1,2,3,4,5] y = [3,6,2,np.nan,3,7] fig = go.Figure(data=go.Scatter(x=x, y=y, mode='lines')) fig.show()
两种方式都会得到符合需求的断开折线效果。
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

