Matplotlib绘制3D图时出现维度不匹配错误求助
问题排查与解决方案
错误原因
你调用的ha.plot()是Matplotlib中用于绘制3D折线图的函数,它要求传入的X、Y、Z参数必须是一维数组。但你传入的X、Y、first_return_area都是二维数组(shape (360,800)),函数内部会自动将二维数组展平为一维(共360*800=288000个元素),后续处理时无法匹配折线图所需的维度逻辑,因此触发广播错误。
修正代码
要绘制二维数组对应的3D曲面,你需要使用plot_surface()(填充曲面)或plot_wireframe()(线框曲面)函数,这两个函数支持二维数组输入:
import numpy as np import matplotlib.pyplot as plt NUM_ROWS = 360 NUM_COLS = 800 fig = plt.figure() ha = fig.add_subplot(111, projection='3d') x = range(NUM_ROWS) y = range(NUM_COLS) X, Y = np.meshgrid(x, y, indexing='ij') first_return_area = np.random.rand(360, 800) # 使用plot_surface绘制填充曲面,或者换成plot_wireframe绘制线框 ha.plot_surface(X, Y, first_return_area, cmap='viridis') plt.show()
补充说明
plot_surface():生成带有颜色填充的连续3D曲面,适合展示密集数据的整体趋势plot_wireframe():生成由线条组成的3D网格,适合展示数据的网格结构,性能优于填充曲面
内容的提问来源于stack exchange,提问作者BersaKAIN
相关产品推荐
相关产品推荐

