2017-03-22 14 views
-2

次の問題が発生しました。関数を使用した等高線プロット

特定のポイント(chi = 2.3)で2つの変数chi2(X、Y)の関数の等高線プロットを行う必要があります。私は多くの方法を試しましたが、私はまだそれをやる方法を知らない。たとえば、私は次のようにしました。

import numpy as np 
    import matplotlib.pyplot as plt 
    from function import chi2 # Two variable function imported from another file 

    x = np.arange(-2,2,0.02) 
    y = np.arange(0,1.5,0.02) 

    X,Y= np.meshgrid(x,y) 

    Z = chi2(X,Y) 

    plt.figure() 
    CS = plt.contour(X,Y,Z) 
    plt.clabel(CS,inline=2.3, fontsize=10) 
    plt.show() 

エラーが発生したのは、Supplied関数が有効なfloatを返さないということです。しかし、私は値を印刷し、その関数を使って作業することができるので、正確に何が問題なのか分かりません。

ありがとうございます。

Bernat。

+0

エラーについて報告するとき、あなたはトレースバックを含める必要があります。また、[mcve]を含める必要があります。ここでは、chi2関数がありません。しかし、この関数とそれをどのように呼び出すかは、問題の原因です。 – ImportanceOfBeingErnest

答えて

0

限り何の検証コードが質問に与えられていないとして、ここでは実用的なソリューションです:

import numpy as np 
import matplotlib.pyplot as plt 

chi2 = lambda x,y: 2*(np.sin(x*4)+1)*np.sin(np.sqrt(y*4)+x) 

x = np.arange(-2,2,0.02) 
y = np.arange(0,1.5,0.02) 

X,Y= np.meshgrid(x,y) 

Z = chi2(X,Y) 

plt.figure() 
CS = plt.contour(X,Y,Z, [2.3]) 
plt.clabel(CS,inline=True, fontsize=10) 
plt.show() 

enter image description here

+0

ありがとう、私は間違いを発見した。私の例では、問題は私の機能であり、輪郭プロット自体ではないことがわかりました。ありがとうございました! – Brny

関連する問題