2016-06-29 9 views
0

私は、異なる領域に対して異なる方法で定義されたサーフェスの3次元プロットを作成しようとしています。例として、x> yなら1に、x < = yならx^2として定義されたf(x、y)を取る。区分的に定義されたサーフェスのPythonプロット

論理演算子でfを定義し、 "plot_surface"関数でプロットしようとしました。これをグリッドで評価しました。残念なことに、私は、 "複数の要素を持つ配列の真理値はあいまいです"というエラーを受けました。

あなたはこれを解決する方法を知っていますか?リンクから撮影

+0

[とValueErrorの可能性の重複:配列の真理値を持ちます複数の要素があいまいです。 a.any()またはa.all()を使用してください(http://stackoverflow.com/questions/10062954/valueerror-the-truth-value-of-an-array-with-more-thanone-element-曖昧です) – m00am

+0

[3Dプロットを使った区分的関数]の複製があります(http://stackoverflow.com/questions/22430429/piecewise-function-with-3d-plot) – Serenity

+0

私はエントリーを読みました。そこで扱われる問題は私の問題を解決しません... – Ignatius

答えて

0

あなたは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() 

使ってあなたにこのプロットを与えるfを定義する必要がありセレニティ投稿者: enter image description here

関連する問題