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

Matplotlib绘制0.01秒步长带间隔柱状图的实现问题

解决时间测量数据柱状图绘制问题

问题原因分析

你的代码无法实现需求的核心问题有两点:

  • 未完整覆盖所有0.01秒间隔的刻度,只绘制了有记录的数值对应的柱子
  • 没有正确统计每个刻度值的出现次数,导致柱高错误

解决方案代码

import matplotlib.pyplot as plt
import numpy as np

# 替换成你真实的时间测量数据数组
data = np.random.uniform(4.5, 5.5, 100)

# 1. 生成所有需要的x轴刻度:4.50到5.50,步长0.01(包含5.50)
x_values = np.arange(4.50, 5.51, 0.01)

# 2. 处理浮点数精度问题,将原始数据四舍五入到两位小数
rounded_data = np.round(data, 2)

# 3. 统计每个刻度值的出现次数(未记录的数值次数为0)
counts = np.zeros(len(x_values))
for idx, val in enumerate(x_values):
    counts[idx] = np.sum(rounded_data == val)

# 4. 绘制柱状图
plt.figure(figsize=(12, 6))  # 调整画布大小,避免x轴刻度拥挤
plt.bar(x_values, counts, width=0.008)  # 设置柱子宽度,防止重叠

# 优化x轴显示:每10个刻度显示一个,旋转45度避免重叠
plt.xticks(x_values[::10], rotation=45)
plt.yticks(np.arange(0, max(counts) + 1, step=1))

plt.xlim(4.49, 5.51)  # 稍微扩展x轴范围,让首尾柱子完整显示
plt.xlabel('时间(秒)')
plt.ylabel('记录次数')
plt.title('时间测量数据分布')

plt.tight_layout()  # 自动调整布局,防止标签被截断
plt.show()

关键细节说明

  • 浮点数精度处理:直接比较浮点数容易出现误差,先将原始数据四舍五入到两位小数,确保和刻度值匹配
  • 完整刻度覆盖:通过np.arange(4.50, 5.51, 0.01)生成所有0.01间隔的刻度,包含5.50
  • 0次数值的显示:统计时给未记录的数值分配0次,绘制时这些位置会显示高度为0的空白(即你需要的间隔效果)
  • 刻度优化:由于x轴刻度多达101个,只显示每10个刻度并旋转,避免重叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:00:43