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

为何matplotlib.pyplot.bar有时会显示额外的负X轴值?

问题分析与解决

问题原因

你遇到的X轴显示负数的问题,本质是柱状图默认宽度与X轴数据点间距不匹配:

  • plt.bar默认柱子宽度为0.8,而你用np.linspace(0,1,len(ncs))生成的X轴点是均匀分布的,当数据量达到200+时,相邻X点的间距仅为1/(len(ncs)-1)(比如265个点的间距约0.0038),远小于柱子默认宽度。
  • 柱子会向自身X坐标的左右两侧延伸,大量重叠后整体超出了0-1的设定范围,matplotlib会自动扩展X轴以显示所有柱子,最终就出现了负数区域。

解决方案

方案1:适配柱子宽度

手动设置柱子宽度等于X轴点的间距,避免重叠和范围溢出:

cs = np.cumsum(size)
ncs = cs / np.max(cs)
x = np.linspace(0,1,len(ncs))
width = x[1] - x[0]  # 计算相邻X点的间距
plt.bar(x, ncs, width=width, label=r)
plt.legend()

方案2:改用折线图(更推荐)

你的数据是累积和的趋势展示,柱状图在数据点极多时并不适合,改用折线图能更清晰呈现趋势,同时不会出现轴范围异常:

cs = np.cumsum(size)
ncs = cs / np.max(cs)
plt.plot(np.linspace(0,1,len(ncs)), ncs, label=r)
plt.legend()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:42:32