当x和y表示为一维数组时,如何使用matplotlib创建3d表面图?

问题描述 投票:0回答:1

我想从数组x,y,z创建3d表面图,其中len(x)和len(z)= 250且len(y)= 7

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


fig = plt.figure()
ax = fig.gca(projection='3d')

surf = ax.plot_surface(X,Y,Z, cmap=cm.coolwarm,
                   linewidth=0, antialiased=False)

产生此错误:

ValueError: shape mismatch: objects cannot be broadcast to a single shape

我尝试过网状网格:

T,U=np.meshgrid(x,b)
surf = ax.plot_surface(T,U,y, cmap=cm.coolwarm,
                   linewidth=0, antialiased=False)

但是这产生了:ValueError(“参数Z必须为二维。”)

朝正确方向的任何观点将不胜感激。谢谢!

python numpy matplotlib surface
1个回答
1
投票

您需要扩展数据以使每个数据点都有x和y。这是通过组合xy形成形状与z相同的数组来完成的。

您可以使用np.meshgrid

np.meshgrid
© www.soinside.com 2019 - 2024. All rights reserved.