Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
matplotlib contour在同一数据集上工作,而contourf失败_Matplotlib_Contourf - Fatal编程技术网

matplotlib 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 =

我正在尝试使用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 = 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
行为问题