Matplotlib 使用函数的等高线图
我被以下问题困住了 我必须做一个两个变量的函数的等值线图,在某个点chi2X,Y,chi=2.3。我已经尝试了很多方法,但我仍然不知道如何去做。例如,我做了以下工作:Matplotlib 使用函数的等高线图,matplotlib,contour,opencv-contour,Matplotlib,Contour,Opencv Contour,我被以下问题困住了 我必须做一个两个变量的函数的等值线图,在某个点chi2X,Y,chi=2.3。我已经尝试了很多方法,但我仍然不知道如何去做。例如,我做了以下工作: 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
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()
获得的错误是提供的函数没有返回有效的浮点。但是我可以打印值并使用该函数工作,所以我不知道到底是什么问题
先谢谢你
Bernat.只要问题中没有给出可验证的代码,这里有一个可行的解决方案:
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()
如果要使用泛型函数,关键是首先将其矢量化 比如说
import numpy as np
import matplotlib.pyplot as plt
def f(x, y):
return 5 * x ** 2 + 2 * y + 8
v_func = np.vectorize(f) # major key!
x, y = np.meshgrid(np.linspace(-5, 5, 100),
np.linspace(-5, 5, 100))
fig, ax = plt.subplots(1)
ax.contour(x, y, v_func(x, y))
plt.show()
你应该得到这样的东西
报告错误时,需要包括回溯。您还需要包括一个。在这里,我们错过了chi2函数。然而,这个函数,加上你如何调用它,是问题的根源。谢谢,我发现了错误。通过你的例子,我可以看出问题出在我的函数上,而不是等高线图本身。非常感谢。