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

Matplotlib中如何设置刻度间的固定间距?附延迟百分位图表场景

刚好碰到过类似的延迟百分位数图表需求,针对你要在Matplotlib里设置刻度固定间距的问题,结合你的代码场景,给你两种实用的解决方案:

一、针对x轴(百分位数索引):设置均匀分类刻度

你的DataFrame索引是[99.0, 99.9, 99.99, 99.999, 99.9999],这些数值是对数级递增的,Matplotlib默认会按数值间距渲染,导致后面的刻度挤在一起。要让它们间距完全固定,最直接的方法是把这些百分位数当作分类标签处理,而非数值变量:

修改后的完整绘图函数

def plot_latency_time_bar(result):
    # 生成等间距的x轴基准位置(数量和DataFrame行数一致)
    x_pos = np.arange(len(result.index))
    bar_width = 0.25  # 单个柱状图的宽度
    
    # 循环绘制每一列的柱状图
    for idx, col in enumerate(result.columns):
        plt.bar(x_pos + idx * bar_width, result[col], width=bar_width, label=col)
    
    # 设置x轴刻度:位置在每组柱状图的中间,标签用原始百分位数
    plt.xticks(x_pos + bar_width, [str(pct) for pct in result.index])
    
    # 补充图表细节
    plt.xlabel('Percentile')
    plt.ylabel('Latency')
    plt.title('Latency Percentile Results')
    plt.legend()
    plt.tight_layout()  # 自动调整布局,避免标签被截断
    plt.show()

# 调用函数测试
plot_latency_time_bar(result)

核心逻辑

  • x_pos = np.arange(len(result.index)):生成0、1、2...这样的等间距数值,作为每个分类的基准位置,保证刻度间距完全一致
  • plt.xticks():第一个参数指定刻度的显示位置(这里加上bar_width让刻度落在每组柱状图的中间),第二个参数是要显示的百分位数标签,用字符串格式保留原始精度

二、针对y轴(延迟数值):设置固定数值间隔

如果你的需求是让y轴刻度保持固定的数值间距(比如每10000单位一个刻度),可以用np.arange()生成固定步长的刻度值,再通过plt.yticks()强制设置:

def plot_latency_time_bar(result):
    x_pos = np.arange(len(result.index))
    bar_width = 0.25
    
    for idx, col in enumerate(result.columns):
        plt.bar(x_pos + idx * bar_width, result[col], width=bar_width, label=col)
    
    plt.xticks(x_pos + bar_width, [str(pct) for pct in result.index])
    
    # 设置y轴固定间距刻度:从0开始,步长10000,覆盖到最大延迟值以上
    y_min = 0
    y_max = result.values.max() + 10000  # 加一点余量避免最高柱子顶到图表边缘
    plt.yticks(np.arange(y_min, y_max, 10000))
    
    plt.xlabel('Percentile')
    plt.ylabel('Latency')
    plt.title('Latency Percentile Results')
    plt.legend()
    plt.tight_layout()
    plt.show()

核心逻辑

  • np.arange(y_min, y_max, step):生成从y_min到y_max、步长为step的等间距数值,你可以根据自己的延迟数据范围调整step(比如改成5000或20000)
  • 这种方法适用于所有需要固定数值间隔的坐标轴,不管是x轴还是y轴

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:55:47