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

Matplotlib股票动态绘图代码运行报ValueError无法转字符串为浮点数

报错原因与修复方案

你遇到的ValueError核心原因是:拆分data_date_volume.txt文件内容时,日期数据被错误分配到了成交量列表中,程序尝试把日期字符串转为浮点型时触发报错。

修复步骤

  • 第一步:确认分隔符拆分逻辑是否正确
    你按&&拆分文件第一行内容后,默认seperatedlst[0]是日期串、seperatedlst[1]是成交量串,实际很可能是这个顺序搞反了。可以先加两行调试代码确认拆分结果:
seperatedlst=seperated.split("&&")
# 新增调试代码,打印拆分后两部分的前50个字符
print("拆分第一部分:", seperatedlst[0][:50])
print("拆分第二部分:", seperatedlst[1][:50])

如果发现第二部分是日期、第一部分是成交量,直接互换两个列表的赋值即可:

# 把原来的0和1索引互换
volumelst=seperatedlst[0].split(",")
datelst=seperatedlst[1].split(",")
  • 第二步:统一三类数据的长度
    你当前的代码对三类数据的取数范围完全不一致,后续绘图时会触发数据长度不匹配的报错:
    • 成交量列表取的是volumelst下标1到倒数第二个元素,长度比原列表少2
    • 日期列表取的是datelst下标0到倒数第三个元素,长度比原列表少2
    • 收盘价列表取的是plotprice下标0到倒数第二个元素,长度比原列表少1
      需要保证三个列表长度完全相同,每个下标对应同一时间点的三类数据,参考调整如下:
# 过滤空值后统一截断为最短列表的长度
lvolume = [float(x.strip()) for x in volumelst if x.strip()]
ldate = [x.strip() for x in datelst if x.strip()]
lprice = [float(x.strip()) for x in plotprice if x.strip()]
min_length = min(len(lvolume), len(ldate), len(lprice))
lvolume, ldate, lprice = lvolume[:min_length], ldate[:min_length], lprice[:min_length]
  • 第三步:删除animate函数内重复创建画布的代码
    你在animate函数内部重复执行fig, axes=plt.subplots(2,1,squeeze=False),会导致每次刷新都新建空白画布,动画无法正常运行,直接删掉这行即可,画布在函数外提前创建就可以正常生效。

内容的提问来源于stack exchange,提问作者Alhikels Mixjwlw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:21:02