轮廓绘制复数和共轭

时间:2014-09-12 00:19:23

标签: 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: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阵列的错误。

1 个答案:

答案 0 :(得分:2)

我不知道你是如何绘图的,因为你没有发布任何代码,但总的来说我建议不要使用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设置为单一颜色可以更轻松地区分两个更多图。 real and imaginary contour plot