我正在尝试在复杂数字的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阵列的错误。
答案 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
设置为单一颜色可以更轻松地区分两个更多图。