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

matplotlib.pyplot.text参数详情

  • 遇到的问题

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

  • 分析原因

查看官方的文档如下:
matplotlib.pyplot.text使用出错 TypeError: unsupported operand type(s) for -: ‘str‘ and ‘float‘_第1张图片
突出的重点就是参数,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轴,后面再制图时标上刻度名称,就可以防止由于参数类型导致绘图过程出现异常。

你可能感兴趣的:(python学习注意的坑,python,plot)