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

柱状图绘制异常:首项缺失及X轴标签设置求助

Matplotlib柱状图异常问题及解决

异常原因

  1. 高度值类型错误:你传入的main_team_values和other_team_values是字符串格式的时间,matplotlib无法将其解析为可用于绘制柱状图高度的数值类型,导致渲染逻辑异常,出现部分柱子不显示的问题。
  2. 变量未定义:第二个ax.bar调用中使用了X + width,但代码里并未定义width变量,这会引发NameError,也是导致绘图异常的潜在缺陷。

X轴标签设置方法

完全可以将X轴标签设置为labels中的内容,通过ax.set_xticks()指定刻度位置,ax.set_xticklabels()设置对应标签即可。

修正后的完整代码

import numpy as np
import matplotlib.pyplot as plt

def time_to_seconds(time_str):
    # 将"HH:MM:SS"或"MM:SS"格式的字符串转为秒数
    h, m, s = map(int, time_str.split(':'))
    return h * 3600 + m * 60 + s

labels = [f'{i+1}/{3}' for i in range(3)]
main_team_values = ['0:05:01', '0:06:54', '0:05:41']
other_team_values = ['0:07:56', '0:07:06', '0:07:04']
# 转换时间为数值(秒)
main_team_sec = [time_to_seconds(t) for t in main_team_values]
other_team_sec = [time_to_seconds(t) for t in other_team_values]

X = np.arange(3)
width = 0.35  # 定义width变量
fig, ax = plt.subplots()

ax.bar(X, main_team_sec, color='k', width=width)
ax.bar(X + width, other_team_sec, color='r', width=width)

# 设置X轴标签
ax.set_xticks(X + width/2)  # 将刻度放在两组柱子中间
ax.set_xticklabels(labels)

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:30:54