拆分数据绘制Python箱线图时变量赋值报错,请求排查代码问题
问题排查与修复方案
代码中的核心问题
- 重复打开文件:多次调用
with open读取同一文件,冗余且低效,一次读取所有行即可完成操作 - 未处理原始字符串数据:
readlines()返回的每一行是包含换行符的完整字符串,你没有将其分割为单个数值,也没有转换为float/int类型——plt.boxplot只接受数值型数组,无法解析字符串 - 列表结构错误:直接把整行字符串放入列表(比如
value1 = [mental_disorders]),得到的是包含单个字符串元素的列表,不是箱线图需要的数值序列
修正后的代码
假设你的data2.txt格式为:每行是用空格(或逗号)分隔的数值,例如:
12 15 18 20 16 8 10 9 11 12
修正代码如下:
import matplotlib.pyplot as plt # 一次读取所有行,避免重复打开文件 with open('data2.txt', 'r') as f2: lines = f2.readlines() # 处理第一行:去除换行符,分割为字符串列表,再转为float数值 mental_disorders = [float(num.strip()) for num in lines[0].split()] # 处理第二行:同理转换 healthy_persons = [float(num.strip()) for num in lines[1].split()] # 直接传入数值列表即可 box_plot_data = [mental_disorders, healthy_persons] plt.boxplot(box_plot_data, patch_artist=True, labels=['Mental', 'Healthy']) plt.show()
额外说明
如果你的数据是用逗号分隔,把split()改成split(',')即可;如果存在空行或多余空格,strip()会帮你清理掉无效字符。
内容的提问来源于stack exchange,提问作者bender
相关产品推荐
相关产品推荐

