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

3D散点图添加Z轴误差棒时报轴重映射维度超限错误求助

3D散点图添加z轴误差棒报错解决方法

问题原因

  • 你手动定义的z、zerror未处理为和x/y(meshgrid生成的3行4列二维数组)匹配的二维结构,且原始列表缺少逗号分隔,维度不匹配触发轴重映射报错
  • 误差棒循环逻辑错误,仅遍历了fx的4个索引,未覆盖全部3*4=12个数据点,无法对应所有散点位置
  • 你已经读取了csv数据但未使用,手动输入数据反而容易出现格式错误

修正后可运行代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits import mplot3d

df = pd.read_csv(r'C:\Users\brown\Dropbox\Thesis\8. Pharm Method development 5 - IDR zone\Excel docs\test.csv')

# 坐标定义
fx = (0.5,1.5,2,6)
fy = (25,20.5,16)
x, y = np.meshgrid(fx, fy)

# 直接从DataFrame提取z和误差值,自动生成和x/y维度匹配的3行4列二维数组
z = df[['a','b','c','d']].values
zerror = df[['a sd','b sd','c sd','d sd']].values

# 绘制散点
fig = plt.figure(figsize = (10,10))
ax = fig.gca(projection='3d')
surf=ax.scatter3D(x, y, z,  c=z, cmap="jet", s=200, edgecolors="black", linewidth=1, marker= "^", antialiased=False)
fig.colorbar(surf, shrink=0.5, aspect=10)

ax.set_xlabel('Measurement zone area (mm²)')
ax.set_ylabel('Distance from compact (mm)')
ax.set_zlabel('IDR (µg/min/cm²)')
ax.set_title('Ibuprofen non-plate')
ax.view_init(30, 300)
plt.rcParams["axes.edgecolor"] = "yellow"
plt.rcParams["axes.linewidth"]  = 2

# 修正误差棒绘制逻辑:遍历所有12个散点
for i in range(len(fy)): # 遍历y轴分组(行)
    for j in range(len(fx)): # 遍历x轴分组(列)
        ax.plot([x[i,j], x[i,j]], 
                [y[i,j], y[i,j]], 
                [z[i,j]-zerror[i,j], z[i,j]+zerror[i,j]], 
                color='black', marker="_")
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:57:03