Traceback (most recent call last): File "D:\CAD\2 pycharm\py_lxl\test01_5.9\demo\test09.6.py", line 24, in <module>

动态 未结 0 110
小小草
小小草 LV1 2023年9月23日 23:40 发表
这个错误是因为`plot_surface()`函数要求输入的`Z`数组必须是二维的,而你传递给它的`z`数组是一维的。你需要将`z`数组转换成二维的形式,才能正确地绘制表面。 可以使用`np.meshgrid()`函数将`x`和`y`数组转换成网格形式,并生成对应的`z`数组。修改代码如下: ```python import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 生成螺旋线上的点 theta_max = 8 * np.pi theta = np.linspace(0, theta_max, 1000) z = np.linspace(-2, 2, 1000) r = z**2 + 1 x = r * np.sin(theta) y = r * np.cos(theta) # 将x、y数组转换成网格形式,并生成对应的z数组 X, Y = np.meshgrid(x, y) Z = np.outer(np.ones_like(X[:, 0]), z) # 生成彩色表面 color_dimension = Z # 按照z值进行着色 minn, maxx = color_dimension.min(), color_dimension.max() norm = plt.Normalize(minn, maxx) m = plt.cm.ScalarMappable(norm=norm, cmap='jet') m.set_array([]) colors = m.to_rgba(color_dimension) # 绘制3D图形 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=colors, shade=False) # 显示图形 plt.show() ``` 运行代码后,应该可以看到一个旋转的螺旋线和一些彩色的表面,它们组成了一个三维图形。
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复