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

Matplotlib折线图设置Y轴范围0-100%的实现问题

解决Matplotlib Y轴刻度范围固定为0-100%的问题

我之前做JUnit性能测试结果可视化时也碰到过一模一样的问题——Matplotlib默认会自动缩放到数据的极值,导致0%和100%的区间可能被截断。你只需要在现有代码里补上set_ylim的调用,就能强制锁定Y轴范围,完整显示0到100%的区间,包括数据未覆盖到的空白区域。

修改后的完整代码:

import matplotlib.pyplot as plt
from matplotlib.ticker import PercentFormatter  # 可选,用于优化百分比显示

chart_fig, chart_ax = plt.subplots(figsize=(8, 4))
# 绘制两条性能数据折线
chart_ax.plot(
    parsed_testcase_results[0]['x_axis_values'], parsed_testcase_results[0]['y_axis_values'], 'g',
    parsed_testcase_results[1]['x_axis_values'], parsed_testcase_results[1]['y_axis_values'], 'r'
)
# 设置坐标轴基础标签
chart_ax.set(xlabel='time (s)', ylabel='percentage')
# 强制锁定Y轴范围为0-100,保留空白区间
chart_ax.set_ylim(0, 100)
# 可选优化:让Y轴刻度直接显示为百分比格式(比如50 → 50%)
chart_ax.yaxis.set_major_formatter(PercentFormatter(xmax=100))

plt.show()  # 别忘了触发图表显示

关键细节说明:

  • set_ylim(0, 100)会直接覆盖Matplotlib的自动缩放逻辑,不管你的数据极值是多少,Y轴都会严格从0延伸到100,空白区域会被完整保留。
  • 如果你的Y轴数据是小数格式(比如0.5代表50%),只需要把PercentFormatter的xmax改成1,同时set_ylim(0, 1),刻度会自动转换成百分比显示。
  • 建议把set_ylim放在绘制折线和设置标签之后调用,避免被后续的绘图操作意外覆盖。

内容的提问来源于stack exchange,提问作者D. Kuras

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:10:38