TypeError: ‘value‘ must be an instance of str or bytes, not a int

在尝试使用matplotlib从Excel数据绘制折线图时遇到TypeError。问题可能在于Excel数据的数字格式及数据类型。确保数据列是数值类型,并将数据转换为列表以供plt.plot()使用。通过调整数据格式并使用plt.plot()函数分别绘制不同实例的折线,创建了一个包含多个数据系列的折线图,并保存为F1-sentence_len.png。

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

写论文时需要用matplotlib画一个包含多个实例的折线图,采用这篇博客的方法,但是会有报错(报错内容如标题所示),百度的解决方案都无效

报错的原因个人认为主要有2个:

1. excel表格中的数字没有设置成数值

2. data['sen_len']取出来的并不是列表形式的数据,因此无法作为plt.plot()的参数来使用,所以需要用list转换一下数据格式就可以了

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

datafile = 'F1-sentence-len.xlsx'
data = pd.read_excel(datafile)
# print(data)
# print(list(data['sen_len']))
# print(list(data['Char baseline']))

plt.figure(figsize=(10, 5))
plt.title('F1 value against sentence length on weibo dataset.', fontsize=20)
plt.xlabel('Sentence Length', fontsize=14)
plt.ylabel('F1 value (%)', fontsize=14)

plt.plot(list(data['sen_len']), list(data['Char baseline']), color="pink", linewidth=2, linestyle='--', label='1', marker='o')
plt.plot(list(data['sen_len']), list(data['F-Lattice LSTM']), color="cyan", linewidth=2, linestyle='--', label='2', marker='+')
plt.plot(list(data['sen_len']), list(data['F-LR-CNN']), color="blue", linewidth=2, linestyle='--', label='3', marker='*')
plt.plot(list(data['sen_len']), list(data['F-GIWL']), color="black", linewidth=2, linestyle='--', label='4', marker='^')

# plt.legend(loc=1)
plt.savefig("F1-sentence_len.png")
plt.show()


折线图多样化设置参考博客:

【python】Matplotlib作图常用marker类型、线型和颜色 - 大大西瓜吃不饱 - 博客园 (cnblogs.com)

plt.savefig 保存图片 - 小小喽啰 - 博客园 (cnblogs.com)

解决Python中报错TypeError: must be str, not bytes问题_python_脚本之家 (jb51.net)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值