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

如何用字符串X轴标签绘制直方图/条形图?解决TypeError报错

解决Matplotlib条形图字符串X轴标签的TypeError问题

嘿,我看到你在尝试用字符串范围作为X轴标签绘制条形图时碰到了TypeError,咱们来搞定这个问题~

首先,先看你代码里的一个小笔误:x列表的最后一个元素'800 - 100'逻辑不太通顺,应该是'800 - 1000'吧?这个小错误可能是触发问题的诱因之一。

不过更关键的是,虽然Matplotlib本身支持直接用字符串作为条形图的X轴类别,但有些情况下(比如旧版本库或者特殊解析问题)会出现你遇到的类型错误。这里给你两种可靠的解决方法:

方法一:修正笔误后直接运行

如果你的Matplotlib版本较新,修正标签的笔误后代码就能正常运行:

import matplotlib.pyplot as plt
# 修正最后一个标签的范围逻辑
x = ['1 - 100','200 - 400','400 - 600','600 - 800','800 - 1000']
y = [10,2,3,4,5]
plt.bar(x,y,align='center') # 绘制条形图
plt.xlabel('Number iterations')
plt.ylabel('Time taken')
plt.show()

方法二:用数值位置+手动设置标签(更稳妥)

如果还是碰到类型错误,推荐用这种更兼容的方式:先使用数值索引作为X轴的位置,再手动把字符串设置为刻度标签,完全避免类型解析问题:

import matplotlib.pyplot as plt
# 定义X轴的字符串标签
x_labels = ['1 - 100','200 - 400','400 - 600','600 - 800','800 - 1000']
y = [10,2,3,4,5]
# 生成对应数量的数值位置
x_positions = range(len(x_labels))
plt.bar(x_positions, y, align='center')
# 将数值位置替换为我们的字符串标签
plt.xticks(x_positions, x_labels)
plt.xlabel('Number iterations')
plt.ylabel('Time taken')
plt.show()

你之前遇到的TypeError: unsupported operand type(s) for -: 'str' and '...',大概率是因为标签字符串的笔误导致解析异常,或者旧版本Matplotlib对字符串类别的处理不够完善,用上面的方法就能解决啦~

内容的提问来源于stack exchange,提问作者blue-sky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:04:04