matplotlib.pyplot.text使用出错 TypeError: unsupported operand type(s) for -: ‘str‘ and ‘float‘

在尝试使用matplotlib.pyplot.text()添加中文标签和数值到柱形图时,遇到TypeError: unsupported operand type(s) for -: 'str' and 'float'。问题出在x和y参数应为float类型而非str。解决方案是将x轴值转换为float,并在后续设置刻度标签。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

matplotlib.pyplot.text参数详情

  • 遇到的问题

首先,我遇到问题是,使用pyplot来画柱形图,然后我想让刻度x轴为中文标签,柱形图上显示对应的值。然后就使用pyplot.text(),画图结果提示错误:TypeError: unsupported operand type(s) for -: ‘str’ and ‘float’

  • 分析原因

查看官方的文档如下:
在这里插入图片描述
突出的重点就是参数,x, y 类型为float,所以不管是x还是y都不能是str类型。

  • 解决代码如下
plt.title("商品信息各平均价格")
plt.rcParams["font.sans-serif"] = ['SimHei']        # 黑体显示中文标签
plt.rcParams["axes.unicode_minus"] = False          # 用来显示负号

# name_list = ["低价平均", "中价平均", "高价平均", "总平均"]
name_list = [1, 2, 3, 4]
num_list = [56.18, 82.82, 161.29, 66.68]
for a, b in zip(name_list, num_list):
    print(a)
    # print(type(b))
    plt.text(a-1, b, "%.2f" % b, va="bottom", ha="center")    # 显示数值

name_list = ["低价平均", "中价平均", "高价平均", "总平均"]
plt.bar(range(len(num_list)), num_list, tick_label=name_list)   # 制图

plt.show()

通过列表来处理x轴,后面再制图时标上刻度名称,就可以防止由于参数类型导致绘图过程出现异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值