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

如何优化Ping时间散点图:移除0值点并添加最值水平线

Ping耗时散点图优化方案

问题背景

我编写的Python代码从EDS4008_2023_04_12.txt文件提取数据绘制散点图,X轴为测试运行时间(分钟),Y轴为成功Ping命令的耗时(ms)。当前图表存在两个问题:

  • 存在Y轴数值为0的无效数据点;
  • 缺少Y轴读数最大值和最小值的水平参考线,不符合预期样式。

修改后的代码

import matplotlib.pyplot as plt

# 读取文件数据
with open("EDS4008_2023_04_12.txt", 'r') as data:
    lines = data.readlines()

# 提取有效数据,过滤无效值
time = []
ping_time = []
index = 0

for string in lines:
    index += 1
    if " time" in string and " bytes" in string:
        var1 = string.split(' ')[8]
        if "=" in var1:
            t = float(var1.split("=")[1].split("m")[0])
            ping_time.append(t)
            time.append(index / 60)
        elif "<" in var1:
            t = float(var1.split("<")[1].split("m")[0])
            ping_time.append(t)
            time.append(index / 60)
        else:
            print("解析错误,跳过该数据")
    # 直接跳过不符合条件的行,不添加无效0值

# 二次过滤确保无0值数据
valid_time = []
valid_ping = []
for t, pt in zip(time, ping_time):
    if pt > 0:
        valid_time.append(t)
        valid_ping.append(pt)

# 绘制散点图
plt.scatter(valid_time, valid_ping)

# 添加最大值、最小值水平参考线
ping_max = max(valid_ping)
ping_min = min(valid_ping)
plt.axhline(y=ping_max, color='red', linestyle='--', label=f'最大值: {ping_max:.2f} ms')
plt.axhline(y=ping_min, color='green', linestyle='--', label=f'最小值: {ping_min:.2f} ms')

# 配置图表标签与标题
plt.xlabel('测试运行时间(分钟)')
plt.ylabel('Ping耗时(ms)')
plt.title('Ping耗时随时间变化趋势')
plt.legend()

plt.show()

关键修改说明

1. 移除无效数据点

  • 取消给无效行添加0值的操作,直接跳过不符合格式的行;
  • 将提取的Ping耗时转为float数值类型,便于后续数值校验;
  • 增加二次过滤步骤,确保所有Y轴数值>0的有效数据才被用于绘图。

2. 添加水平参考线

  • 计算有效Ping数据的最大值和最小值;
  • 使用plt.axhline()绘制两种颜色的虚线参考线,并通过图例标注具体数值,直观展示耗时极值。

图表效果对比

  • 修改前:图表底部存在大量Y轴为0的无效点,遮挡有效数据趋势;
  • 修改后:仅显示有效Ping耗时点,同时红色虚线标注最大耗时、绿色虚线标注最小耗时,数据趋势清晰直观。

内容的提问来源于stack exchange,提问作者H A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:20:40