我有一个功能F = 0.8*X+0.6*Y+0.9*Z
但我的问题是X Y和Z相互关联。 X+Y+Z = 1
。值和间隔应如下:
X = np.arange(0,1,0.01)
Y = np.arange(0,(1-X),0.01)
Z = 1-(X+Y)
你能否用一种简单的方法在Python中做到这一点。 提前谢谢。
答案 0 :(得分:1)
如果你想在matplotlib中做一个曲面图,你的x,y和z数组应该是2D数组。如果变量的间隔相互依赖,则可以根据变量来定义变量,这些变量的间隔彼此独立,如此处的u和v。
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.colors import Normalize
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
u = np.linspace(0, 1, 100)
v = np.linspace(1, 0, 100)
x = np.outer(np.ones_like(u), v)
y = np.outer(v, u)
z = 1 - x - y
f = 0.8*x + 0.6*y + 0.9*z
norm = Normalize (f.min(), f.max())
m = plt.cm.ScalarMappable()
m.set_array([])
fcolors = m.to_rgba(f)
ax.view_init(azim=45)
ax.plot_surface(x, y, z, norm=norm, rstride=2, cstride=2, facecolors=fcolors, shade=False)
plt.show()