matplotlib contour在同一数据集上工作,而contourf失败
我正在尝试使用matlotlib的contour和contourf函数将两个变量的函数可视化。使用相同的数据,contour可以完美地工作,但contourf会生成有缺陷的图像。原因是什么matplotlib contour在同一数据集上工作,而contourf失败,matplotlib,contourf,Matplotlib,Contourf,我正在尝试使用matlotlib的contour和contourf函数将两个变量的函数可视化。使用相同的数据,contour可以完美地工作,但contourf会生成有缺陷的图像。原因是什么 from numpy import exp, pi import numpy as np # function to be plotted def R(n0,n1,y,d): r01 = -(n1-n0+y)/(n0+n1+y) t01 = 2*n0/(n0+n1+y) t10 =
from numpy import exp, pi
import numpy as np
# function to be plotted
def R(n0,n1,y,d):
r01 = -(n1-n0+y)/(n0+n1+y)
t01 = 2*n0/(n0+n1+y)
t10 = 2*n1/(n0+n1+y)
r10 = -(n0-n1+y)/(n0+n1+y)
return abs(r01 - t01*t10*exp(4j*pi*d)/(1+r10*exp(4j*pi*d)))**2.0
# meshgrid for plotting
xlist = np.linspace(0.0, 0.5, 101)
ylist = np.linspace(0.0, 6.0, 101)
X, Y = np.meshgrid(xlist, ylist)
# function values on the meshgrid
Z = []
for y in ylist:
zslice = []
for d in xlist:
zslice.append(R(1.0,2.0,y,d))
Z.append(zslice)
# plot -------------------------------------
import matplotlib.pyplot as plt
plt.figure()
levels = [0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]
cp = plt.contour(X, Y, Z, levels) # works
cp = plt.contourf(X, Y, Z, levels) # fails=provides defective image
plt.colorbar(cp)
plt.clabel(cp, inline=True, fontsize=10)
plt.show()
您正在将标签设置为
contourf
。但是,它们应设置为轮廓
import matplotlib.pyplot as plt
plt.figure()
levels = [0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]
cp2 = plt.contour(X, Y, Z, levels)
cp = plt.contourf(X, Y, Z, levels)
plt.colorbar(cp)
plt.clabel(cp2, inline=True, fontsize=10)
plt.show()
尽管底层逻辑并不完全清楚,但这解决了奇怪的
tourtf
行为问题。您正在将标签设置为tourtf
。但是,它们应设置为轮廓
import matplotlib.pyplot as plt
plt.figure()
levels = [0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]
cp2 = plt.contour(X, Y, Z, levels)
cp = plt.contourf(X, Y, Z, levels)
plt.colorbar(cp)
plt.clabel(cp2, inline=True, fontsize=10)
plt.show()
尽管底层逻辑并不完全清楚,但这解决了奇怪的tourtf
行为问题