You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Matplotlib折线图中单个缺失数据点的颜色且避免折线落到0值

解决方案

你可以将代表缺失值的0替换为numpy.nan,Matplotlib绘制折线时会自动跳过NaN值,不会产生折线落到0的连线,之后单独对缺失位置做红色标记即可。另外注意你现有代码中point_1、point_2都存在重复赋值的问题,会覆盖第一次定义的数值,可根据实际需求保留对应序列。

修改后的完整代码如下:

import matplotlib.pyplot as plt
import numpy as np

plt.figure(figsize=(3,2))
no = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 原代码重复赋值point_1,可根据需求保留对应数据,示例保留第二次赋值的数值
point_1 = [88.404, 88.404,88.404, 88.404, 88.404, 88.404, 88.404,88.404, 88.404, 88.404]

# 处理point_2的缺失值
point_2 = [72.501,  81.245,76.507,80.989,81.191,77.570,81.817,78.354,82.230,0]
# 仅最后一位为缺失值时可以直接赋值:point_2[-1] = np.nan
point_2 = [np.nan if val == 0 else val for val in point_2]

plt.plot(no, point_1, color='orange', marker='^', linestyle='dashed',label='Measured 1 ')
plt.plot(no, point_1, color='orange', marker='*', linestyle='dashed',label='Predicted 1')

plt.plot(no, point_2, color='grey', marker='^', linestyle='dashed',label='Measured 2')
plt.plot(no, point_2, color='grey', marker='*',linestyle='dashed',label='Predicted 2')

# 单独标记缺失的第10个数据点,位置、样式、大小可自行调整
plt.scatter(x=10, y=70, color='red', marker='*', s=50, label='缺失数据')

plt.ylim(0, 100)
plt.xticks(no,fontsize='8')
plt.legend(loc='upper right',prop={'size': 3.5})
plt.xlabel('no.')
plt.ylabel('Ms')

plt.show()

核心修改说明

  • 引入numpy库使用np.nan替换缺失值标识0,Matplotlib绘制折线时会自动在缺失位置中断,不会出现回落至0的连线
  • 新增plt.scatter单独绘制缺失数据的红色标记,可通过调整x/y参数修改标记位置,marker参数修改标记样式,s参数调整标记大小
  • 完全保留原代码的样式配置,仅修改缺失值相关逻辑

内容的提问来源于stack exchange,提问作者abaair davis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:27:03