python三维曲面绘制中的轴形状问题

python三维曲面绘制中的轴形状问题,python,matplotlib,Python,Matplotlib,这是我第一次尝试三维曲面打印。花了好几个小时试图拍出一个情节,但还没有运气。下面是我的脚本,它可以绘制z_ax相对于x_ax和y_ax的曲面图。z_ax变量是从其他脚本生成的,但我认为这与此无关,所以我只是复制粘贴数组,只是为了复制 import matplotlib.pyplot as plt from mpl_toolkits.mplot3d.axes3d import Axes3D import numpy as np z_ax = np.array([[98.0952381 , 98.3

这是我第一次尝试三维曲面打印。花了好几个小时试图拍出一个情节,但还没有运气。下面是我的脚本,它可以绘制z_ax相对于x_ax和y_ax的曲面图。z_ax变量是从其他脚本生成的,但我认为这与此无关,所以我只是复制粘贴数组,只是为了复制

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
import numpy as np
z_ax = np.array([[98.0952381 , 98.37627192, 98.22459584, 97.96470716, 97.97332409,
        98.55658199, 97.59356635, 97.72653459],
       [98.78787879, 99.56700585, 99.26385681, 99.41539461, 99.43703447,
        99.37211316, 99.28240025, 99.30172134],
       [99.43722944, 99.35050877, 99.35046189, 99.3287864 , 99.50632254,
        99.3432448 , 99.39993814, 99.38291653],
       [99.13419913, 99.52370643, 99.52367206, 99.44787269, 99.49766153,
        99.51645497, 99.55459326, 99.51824185],
       [99.48051948, 99.45875731, 99.58140878, 99.58861102, 99.50632254,
        99.4154157 , 99.44324157, 99.51282884],
       [99.61038961, 99.41545789, 99.53810624, 99.51282884, 99.4630175 ,
        99.54532333, 99.51128982, 99.55613294],
       [99.43722944, 99.52370643, 99.4948037 , 99.58861102, 99.51498354,
        99.48036952, 99.51747603, 99.5398939 ],
       [99.48051948, 99.58865555, 99.50923788, 99.49117679, 99.41971245,
        99.52367206, 99.55459326, 99.5398939 ],
       [99.65367965, 99.48040701, 99.66801386, 99.577785  , 99.44569548,
        99.55254042, 99.57315187, 99.59402403],
       [99.39393939, 99.67525438, 99.48036952, 99.59943705, 99.5756106 ,
        99.52367206, 99.52366223, 99.51282884]])

x_ax = np.linspace(0.1,0.8,8) # the test size
y_ax = np.linspace(0.01,1,10) # zero class weight 

fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(x_ax, y_ax, z_ax)
plt.show()
但是,当我运行脚本时,我得到:

Traceback (most recent call last):
File "tmp.py", line 30, in <module>
ax.plot_surface(x_ax, y_ax, z_ax)
File "C:\Python27\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py", line 1567, in plot_surface
X, Y, Z = np.broadcast_arrays(X, Y, Z)
File "C:\Python27\lib\site-packages\numpy\lib\stride_tricks.py", line 249, 
in broadcast_arrays
shape = _broadcast_shape(*args)
File "C:\Python27\lib\site-packages\numpy\lib\stride_tricks.py", line 184, 
in _broadcast_shape
b = np.broadcast(*args[:32])
ValueError: shape mismatch: objects cannot be broadcast to a single shape
回溯(最近一次呼叫最后一次):
文件“tmp.py”,第30行,在
ax.plot_曲面(x_ax,y_ax,z_ax)
文件“C:\Python27\lib\site packages\mpl\u工具包\mplot3d\axes3d.py”,第1567行,在plot\u曲面中
十、 Y,Z=np.广播_数组(X,Y,Z)
文件“C:\Python27\lib\site packages\numpy\lib\stride\u tricks.py”,第249行,
在广播阵列中
形状=_广播_形状(*args)
文件“C:\Python27\lib\site packages\numpy\lib\stride\u tricks.py”,第184行,
呈广播状
b=np.广播(*args[:32])
ValueError:形状不匹配:无法将对象广播到单个形状

我检查了坐标的形状,它们似乎与曲面图相匹配。所以,我不明白我做错了什么。非常感谢您的帮助。

所有阵列必须具有相同的形状。看。尝试使用
np.meshgrid

'y\u ax'和'x\u ax'必须是二维数组。尝试“X,Y=np.meshgrid(X_ax,Y_ax)”和“ax.plot_surface(X,Y,z_ax)”。