查看某人的文档
contour发现,有两种方法可以调用此函数,例如
contour(Z)或
contour(X,Y,Z)。所以,你会发现它不需要任何
X或者
Y价值能够体现的。
但是,为了绘制轮廓,函数必须知道下面的网格。Matplotlib的
contour基于矩形网格。但即便如此,允许
contour(z),与
z作为一维数组,就不可能知道现场应该如何绘制。在的情况下
contour(Z),其中
Z是一个二维数组,它的形状明确地将针对图中的网格。
一旦知道了该网格,是否将可选
X和
Y数组展平就变得无关紧要了。实际上,文档告诉我们的是:
X和Y必须都是与Z形状相同的2-D,或者它们都必须是1-D,以使len(X)是Z中的列数,而len(Y)是Z中的行数。
同样显而易见的是,某些东西
plt.contour(X_grid.ravel(), Y_grid.ravel(),Z_grid.ravel())无法生成等高线图,因为有关网格形状的所有信息都将丢失,并且等高线函数无法知道如何解释数据。例如,如果
len(Z_grid.ravel())== 12底层网格的形状可以是
(1,12), (2,6), (3,4), (4,3), (6,2), (12,1)。
可能的解决方法当然是允许一维数组并引入参数
shape,例如
plt.contour(x,y,z,shape=(6,2))。但是事实并非如此,因此您必须忍受
Z需要为2D的事实。
但是,如果您正在寻找一种方法来获得具有平坦(散乱的)数组的国土图,则可以使用
plt.tricontour()。
plt.tricontour(X_grid.ravel(), Y_grid.ravel(), Z_grid.ravel())
在这里,将使用Delaunay三角剖分在内部生成三角形网格。因此,即使完全随机化的点也将产生不错的结果,如下图所示,将其与赋予的相同随机点进行比较
contour。
(这里是产生这张图片的代码)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)