Python中如何对barplot各速度区间对应误差值求平均并绘图
实现按速度区间求平均误差的方法
你可以用pandas内置的cut方法完成自动分箱,配合groupby分组统计,无需手动逐段写过滤逻辑,可适配任意区间宽度、任意范围的分箱需求,完整实现代码如下:
import numpy as np import matplotlib.pyplot as plt import pandas as pd plt.figure(figsize=(24, 12), dpi=80) # 1. 定义分箱边界:按步长1划分,范围从0到速度最大值向上取整,可按需调整 max_speed = summ['MeanSpeed'].max() bins = np.arange(0, np.ceil(max_speed) + 1, step=1) # 2. 为每行数据分配对应的速度区间,right=False表示区间为左闭右开[0,1),[1,2)...和你手动计算的规则一致 summ['speed_interval'] = pd.cut(summ['MeanSpeed'], bins=bins, right=False) # 3. 按区间分组,计算每组的平均误差,自动过滤无数据的空区间 interval_avg_error = summ.groupby('speed_interval')['Error'].mean().dropna() # 4. 绘制柱状图 x_axis = np.arange(len(interval_avg_error)) plt.bar(x_axis, interval_avg_error.values) # 配置x轴刻度为区间名称,也可自行替换为其他显示格式 plt.xticks(x_axis, [f"{int(interval.left)}~{int(interval.right)}" for interval in interval_avg_error.index]) plt.xlabel('速度区间') plt.ylabel('平均误差') plt.show()
如果需要调整区间宽度,只需要修改np.arange的step参数即可,比如步长设为2就是02、24的区间划分。
内容的提问来源于stack exchange,提问作者Poyita de troya
相关产品推荐
相关产品推荐

