Python 绘制f(x,y)=z=min(x,y)将创建二维三角形而不是三维曲面

Python 绘制f(x,y)=z=min(x,y)将创建二维三角形而不是三维曲面,python,matplotlib,Python,Matplotlib,我试图理解一个涉及笛卡尔平面的问题集,其中: f(x, y) = min(x, y) g(x, y) = max(x, y) h(x, y) = x + y 因此,我尝试使用python和matplotlib绘制给定函数,如下所示: data_x_axis = list(range(11)) data_y_axis = list(range(11)) data_z_axis = [] for x_value in data_x_axis: data_z_axis.append([mi

我试图理解一个涉及笛卡尔平面的问题集,其中:

f(x, y) = min(x, y)
g(x, y) = max(x, y)
h(x, y) = x + y
因此,我尝试使用python和matplotlib绘制给定函数,如下所示:

data_x_axis = list(range(11))
data_y_axis = list(range(11))
data_z_axis = []

for x_value in data_x_axis:
    data_z_axis.append([min(x_value, y_value) for y_value in data_y_axis])

print(data_z_axis)


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


fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Grab some test data.
X = data_x_axis
Y = data_y_axis
Z = np.array(data_z_axis)

# Plot a basic wireframe.
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)

plt.show()
本质上,这是以下代码示例:

x、 y值范围从0到10,z被计算为最小值(x,y)

然而,结果是:

我的数学已经不太可靠了,但我期望的是表面积,而不是二维三角形


我对基础数学的理解是否错误,或者我在matplotlib中计算值/绘制值时是否出错?

它们应该是曲面。你的数学是对的

不幸的是,您正在绘制两个一维阵列,而不是二维阵列:

data_x_axis = list(range(11))
data_y_axis = list(range(11))
X = data_x_axis
Y = data_y_axis
ax.plot_wireframe(X, Y, ....
这只给了你11个点来绘制

试试这个:

  • X
    Y
    值创建一个数组
  • 使用这些坐标(对)计算
    Z
  • 将每个
    Z
    与一对关联:
    (X,Y)
  • 现在绘制三元组
    (X,Y,Z)