0
我有一個功能F = 0.8*X+0.6*Y+0.9*Z
但我的問題是X Y和Z彼此相關。 X+Y+Z = 1
。值和間隔應該是這樣的:Python繪圖3d繪圖
X = np.arange(0,1,0.01)
Y = np.arange(0,(1-X),0.01)
Z = 1-(X+Y)
請你給一個簡單的方法來做到這一點在Python中。 在此先感謝。
我有一個功能F = 0.8*X+0.6*Y+0.9*Z
但我的問題是X Y和Z彼此相關。 X+Y+Z = 1
。值和間隔應該是這樣的:Python繪圖3d繪圖
X = np.arange(0,1,0.01)
Y = np.arange(0,(1-X),0.01)
Z = 1-(X+Y)
請你給一個簡單的方法來做到這一點在Python中。 在此先感謝。
如果你想在matplotlib中做一個曲面圖,你的x,y和z數組應該是二維數組。如果你的變量的間隔依賴於彼此,你可以定義你的變量的變量的時間間隔是互相獨立的像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()
謝謝你的答案。我意識到我有兩個變量:x和y。 z基本上是1-x-y。所以我相應地改變了我的功能。從簡單的修改你的代碼我得到了我想要的陰謀。 代替使用: ax.plot_surface(X,Y,Z,範數=範數,rstride = 2,cstride = 2,facecolors = fcolors,遮陽=假) 我使用: ax.plot_surface(X, y,f,rstride = 2,cstride = 2,facecolors = fcolors,shade = False) –
@OrhanAbar你用什麼產生一個3d圖(即顏色和點的高度均爲f)。礦產生一個四維圖(即點的高度是z和他們的顏色是f) – Azad