0
我正在嘗試製作以不同區域以不同方式定義的表面的3D繪圖。例如,如果x> y,則定義爲1,如果x < = y,則定義爲x^2。分段定義表面的Python繪圖
我用邏輯運算符定義了f,並試圖用「plot_surface」函數繪製它,並在網格中對它進行評估。不幸的是,我得到一個錯誤,說「具有多個元素的數組的真值是不明確的」。
你知道解決這個問題的方法嗎?發表寧靜
我正在嘗試製作以不同區域以不同方式定義的表面的3D繪圖。例如,如果x> y,則定義爲1,如果x < = y,則定義爲x^2。分段定義表面的Python繪圖
我用邏輯運算符定義了f,並試圖用「plot_surface」函數繪製它,並在網格中對它進行評估。不幸的是,我得到一個錯誤,說「具有多個元素的數組的真值是不明確的」。
你知道解決這個問題的方法嗎?發表寧靜
從鏈接以您需要定義F使用np.piecewise
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d, Axes3D
num_steps = 500
x_arr = np.linspace(0,100, num_steps)
y_arr = np.linspace(0,100, num_steps)
def zfunc(x, y):
return np.piecewise(x, [x>y, x<=y], [lambda x: 1, lambda x: x**2])
x,y = np.meshgrid(x_arr, y_arr)
z =zfunc(x,y)
fig=plt.figure()
ax=fig.add_subplot(1,1,1,projection='3d')
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.plot_surface(x,y,z,cmap='viridis') #cmap to make it easier to see
ax.view_init(30, 70)
plt.show()
[ValueError異常的可能重複:數組與真值不止一個元素是不明確的。使用a.any()或a.all()](http://stackoverflow.com/questions/10062954/valueerror-the-truth-value-of-an-array-with-more-than-one-element-是 - 不明確的) – m00am
[分段函數與3d圖]可能的副本(http://stackoverflow.com/questions/22430429/piecewise-function-with-3d-plot) – Serenity
我讀過條目,我會說具體在那裏治療的問題不能解決我的問題... – Ignatius