Matplotlib 数组不可iterable,但如何在zip()中用作参数?
我想绘制DICOM扫描的三维可视化,但我被这个错误卡住了 我使用的是行进立方体法。首先从网格顶点和面返回,然后传递到plt_3d。导入的模块: 将numpy作为np导入 将pydicom作为pyd导入 导入操作系统 将matplotlib.pyplot作为plt导入 从全局导入全局 从mpl_toolkits.mplot3d.art3d导入Poly3DCollection 导入scipy.ndimage 从撇渣进口形态学 从脱脂进口措施 从skimage.transform导入调整大小 从sklearn.cluster导入KMeans 从plotly import版本 从plotly.offline导入下载\u plotlyjs,初始化\u笔记本\u模式,绘图,iplot 从plotly.tools将FigureFactory作为FF导入 从plotly.graph\u objs导入* 初始笔记本模式(已连接=真) 重映射后的imgs_是包含DICOM数据的像素阵列(3d)Matplotlib 数组不可iterable,但如何在zip()中用作参数?,matplotlib,scikit-image,Matplotlib,Scikit Image,我想绘制DICOM扫描的三维可视化,但我被这个错误卡住了 我使用的是行进立方体法。首先从网格顶点和面返回,然后传递到plt_3d。导入的模块: 将numpy作为np导入 将pydicom作为pyd导入 导入操作系统 将matplotlib.pyplot作为plt导入 从全局导入全局 从mpl_toolkits.mplot3d.art3d导入Poly3DCollection 导入scipy.ndimage 从撇渣进口形态学 从脱脂进口措施 从skimage.transform导入调整大小 从skl
def make_mesh(image, threshold=-300, step_size=1):
p = image.transpose(2,1,0)
verts, faces, norm, val = measure.marching_cubes_lewiner(p, threshold,
step_size=step_size, allow_degenerate=True)
print(verts)
return verts, faces
def plotly_3d(verts, faces):
x,y,z = zip(*verts)
fig = FF.create_trisurf(x=x,
y=y,
z=z,
plot_edges=False,
colormap=colormap,
simplices=faces,
backgroundcolor='rgb(64, 64, 64)',
title="Interactive Visualization")
iplot(fig)
def plt_3d(verts, faces):
print(“Drawing”)
x,y,z = zip(*verts)
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection='3d')
mesh = Poly3DCollection(verts[faces], linewidths=0.05, alpha=1)
face_color = [1, 1, 0.9]
mesh.set_facecolor(face_color)
ax.add_collection3d(mesh)
ax.set_xlim(0, max(x))
ax.set_ylim(0, max(y))
ax.set_zlim(0, max(z))
ax.set_axis_bgcolor((0.7, 0.7, 0.7))
plt.show()
v, f = make_mesh(imgs_after_resamp, 350)
new3d=np.vectorize(plt_3d)
new3d(v,f)
ValueError回溯(最近一次调用上次)
在里面
---->1号地块(imgs-re,400)
TypeError:type object参数在*之后必须是一个iterable,而不是numpy。float32能否提供(a)错误的完整回溯,(b)包含所有导入的完整代码,以及(c)一些示例数据?我无法通过查看此代码立即判断错误在何处。@Juan请您现在检查,如果缺少任何内容,请告诉我。您的代码中没有
plot\u ve
或imgs\u re
,因此无法完全追溯。代码中的错误发生在哪里?您也没有提供示例数据…所谓“完全回溯”,我指的是错误消息的所有行,而不仅仅是最后1-2行。