Python绘图报错TypeError: QuadMesh与float不支持*运算求助
报错原因与解决方案
错误根因
核心问题是变量名冲突导致物理常量被覆盖:
- 代码开头从
scipy.constants导入的c是真空光速常量,属于浮点类型数值 - 第一个绘图环节你写了
c = ax.pcolormesh(...),将pcolormesh返回的QuadMesh对象赋值给变量c,直接覆盖了原本的光速常量 - 第二个绘图执行
c*epsilon_0运算时,此时c已经是QuadMesh对象,无法和浮点类型的真空介电常数epsilon_0做乘法运算,因此抛出对应的类型错误。
修复方案
仅需要修改第一个绘图中接收pcolormesh返回值的变量名,不要和光速常量c重名即可,示例修改后的代码如下:
returned_times_pretty_mesh, xis_mesh = np.meshgrid(returned_times_pretty, xis) fig, ax = plt.subplots() # 将原变量名c改为pcm(pcolormesh缩写),避免覆盖光速常量 pcm = ax.pcolormesh(returned_times_pretty_mesh, xis_mesh, np.real(Es_Kappa_time), cmap='viridis') fig.colorbar(pcm, ax=ax, label=r'$[V/m]$') ax.set_xlabel("t [s]") ax.set_ylabel("xi [m]") plt.show() fig, ax = plt.subplots() # 此时c恢复为原本的光速常量,运算逻辑正常 ax.imshow(np.multiply(np.square(np.real(Es_Kappa_time)), (c*epsilon_0)), cmap='viridis') ax.set_xlabel("t [s]") ax.set_ylabel("xi [m]") plt.show()
内容的提问来源于stack exchange,提问作者velenos14
相关产品推荐
相关产品推荐

