2017-03-22 51 views
-2

我遇到以下問題;使用函數的輪廓圖

我必須在某個點(chi = 2.3)做兩個變量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