柱状图绘制异常:首项缺失及X轴标签设置求助
Matplotlib柱状图异常问题及解决
异常原因
- 高度值类型错误:你传入的
main_team_values和other_team_values是字符串格式的时间,matplotlib无法将其解析为可用于绘制柱状图高度的数值类型,导致渲染逻辑异常,出现部分柱子不显示的问题。 - 变量未定义:第二个
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
相关产品推荐
相关产品推荐

