如何在python中绘制隐式定义函数的图形?

时间:2017-03-25 13:32:35

标签: python-3.x matplotlib contour

我的函数f采用形式(1,x,y)的向量,输出是实数。

我想在x-y平面上绘制一条线,使得f(1,x,y)== 0。

我的尝试:

delta = 0.025
xrange = arange(0, 12, delta)
yrange = arange(0, 12, delta)
p, q = meshgrid(xrange, yrange)

mesh_point = []
for i in range(len(p[0])):
    for j in range (len(q[0])):
        mesh_point.append([p[0][i], q[0][j]])

for i in range (0, len(p[0])):
plt.contour(p, q, (y1([1, p[0][i], q[0][i]])-y2([1, p[0][i], q[0][i]])) , [0])
plt.show()   

这里f = y1(...) - y2(...)

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

您可以在f(1,x,y) = 0处绘制轮廓线,方法是将左侧提供给contour并选择单个级别(0)。

import matplotlib.pyplot as plt
import numpy as np

delta = 0.025
x = np.arange(0, 12, delta)
y = np.arange(0, 12, delta)
p, q = np.meshgrid(x, y)
# define some function f(n,x,y)
f = lambda n, x, y: np.sin(np.sqrt(np.abs(x-3-0.5*y)**1.5))+np.exp(-(y-6)**2)-1
z=f(1, p,q)

# plot contour line of f(1,x,y)==0
plt.contour(p, q, z , [0], colors=["k"])

#make legend
proxy, = plt.plot([], color="k")
plt.legend(handles=[proxy], labels=["f(1,x,y) = 0"])
plt.show()  

enter image description here