Python 等高线绘制复数和共轭

Python 等高线绘制复数和共轭,python,matplotlib,plot,Python,Matplotlib,Plot,我试图用python制作一个带有复数的等高线图(我使用的是matplotlib、pylab) 我正在研究调和多项式的尖锐边界,但具体来说,现在我正在尝试绘制: Re(z(bar)-e^(z))=0 Im(z(bar)-e^z)=0 然后在一个等高线中绘制它们,以找到它们的零点,从而确定方程z(bar)=e^(z)有多少解 是否有人有等高线绘制经验,特别是复数 import numpy as np from matplotlib import pyplot as plt x = np.r_[0

我试图用python制作一个带有复数的等高线图(我使用的是matplotlib、pylab)

我正在研究调和多项式的尖锐边界,但具体来说,现在我正在尝试绘制:

Re(z(bar)-e^(z))=0 Im(z(bar)-e^z)=0

然后在一个等高线中绘制它们,以找到它们的零点,从而确定方程z(bar)=e^(z)有多少解

是否有人有等高线绘制经验,特别是复数

import numpy as np
from matplotlib import pyplot as plt


x = np.r_[0:10:30j]
y = np.r_[0:10:20j]
X, Y = np.meshgrid(x, y)
Z = X*np.exp(1j*Y) # some arbitrary complex data

def plotit(z, title):
    plt.figure()
    cs = plt.contour(X,Y,z) # contour() accepts complex values
    plt.clabel(cs, inline=1, fontsize=10) # add labels to contours
    plt.title(title)
    plt.savefig(title+'.png')

plotit(Z, 'real')
plotit(Z.real, 'explicit real')
plotit(Z.imag, 'imaginary')

plt.show()

编辑:上面是我的代码,请注意,对于Z,我需要绘制(x-iy)-e^(x+iy)=0的实部和虚部。那里的电流Z是任意的。当我尝试插入2D数组时,这给了我一个错误。

我不知道您是如何绘制的,因为您没有发布任何代码,但一般来说,我建议不要使用pylab或pyplot接口,而是使用matplotlib,使用直接对象方法更健壮,也更简单。以下是在同一绘图上绘制两组数据的等高线的示例

import numpy as np
import matplotlib.pyplot as plt

# making fake data
x = np.linspace(0, 2)
y = np.linspace(0, 2)
c = x[:,np.newaxis] * y
c2 = np.flipud(c)

# plot
fig, ax = plt.subplots(1, 1)
cont1 = ax.contour(x, y, c, colors='b')
cont2 = ax.contour(x, y, c2, colors='r')
cont1.clabel()
cont2.clabel()
plt.show()
对于tom10,下面是代码生成的图。请注意,将
colors
设置为单一颜色可以更容易地区分两个绘图。

当处理复数时,你必须拿出一些实值来绘制,或者是实数/虚数部分,或者是绝对值。我想你应该用绝对值。注意:这个问题太宽泛了——网上有很多matplotlib等高线的文档和示例。我正在提取真实和想象的曲线图,并试图将它们分别绘制在同一等高线图上,以便找到所需方程的零点。这使这个问题成为一个难题。你真正的问题是如何绘制出相互重叠的等高线。。。你试过了吗?我现在可以画出我的实部和虚部,但是一旦程序运行,它们会显示在不同的窗口上。我已经相应地编辑了我的帖子,你有没有办法帮我画出我的方程,并在同一个窗口上画出它的实部和虚部?你的问题是在你的绘图函数中调用
plt.figure
。它将创造一个新的形象!你所需要做的就是删除这一行。但是如果可以避免的话,我也不会使用依赖于全局变量的绘图函数。+1:我认为这会起作用,但是为什么不显示生成的绘图,它会更有说服力。。同样对于这个特殊的问题,看看这看起来有多混乱会非常有用?谢谢。这并不像我想象的那么令人困惑。我想幸运的是,这些数字没有重叠。