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

使用Python matplotlib绘制滞回曲线触发ValueError空参数错误咨询

报错根因
  • Python中print()函数的作用是将内容输出到控制台,本身没有返回值,默认返回None。你代码中将print(stress[0:length:10])的结果赋值给Sigma、print(y[0:length:10])的结果赋值给strain,导致这两个变量实际都是空值,传入plt.plot()时就触发了「x、y不能为None」的报错。
  • 代码中存在冗余逻辑:先后两次对length赋值,第一次的len(stress)会被第二次的len(y)直接覆盖,若两个数组长度不一致可能引发索引越界风险。
修复后的代码
import matplotlib.pyplot as plt
import numpy as np
plt.style.use(['science','no-latex'])

# 优化:单次读取所需两列,减少文件读取次数
x, y = np.loadtxt('F:\\I2M\\LCF\\Ep1_camp4_P4_TTH650 06-9-21 11 01 24\\data_1.csv', 
                  unpack=True, skiprows=2, usecols=(2,3), delimiter=',')
stress = (x*1000)/28.27   # 单位转换为MPa
# 取两个数组的最小长度,避免索引越界
length = min(len(stress), len(y))

plt.figure(figsize=(5, 5))
# 先做切片赋值,再单独打印用于调试
Sigma = stress[::10] # 等效于stress[0:length:10]
strain = y[::10]
# 单独打印调试信息,不影响变量赋值
print(Sigma)
print(strain)

plt.plot(strain, Sigma, color = 'k')
plt.xlabel('应变')
plt.ylabel('应力 (MPa)')
plt.show()
补充说明

如果绘制的滞回曲线出现线条交叉混乱的情况,可以适当调整切片步长,或者按加载周期拆分数据后逐周期绘制,可视化效果会更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 16:42:04