gpt4 book ai didi

matplotlib - 将 pcolormesh 和轮廓放在同一个网格上?

转载 作者:行者123 更新时间:2023-12-04 01:31:37 25 4
gpt4 key购买 nike

我正在尝试使用 contour 显示带有轴标签的二维数据和 pcolormesh .正如在 matplotlib 用户列表中所指出的,这些函数遵循不同的约定:pcolormesh期望 x 和 y 值指定单个像素的角,而 contour期望像素的中心。

使这些行为一致的最佳方法是什么?

我考虑过的一种选择是制作“中心到边缘”函数,假设数据间隔均匀:

def centers_to_edges(arr):
dx = arr[1]-arr[0]
newarr = np.linspace(arr.min()-dx/2,arr.max()+dx/2,arr.size+1)
return newarr

另一种选择是使用 imshowextent关键字集。
第一种方法不能很好地处理 2D 轴(例如,由 meshgridindices 创建),第二种方法完全丢弃轴号

最佳答案

您的数据是常规网格吗?如果没有,您可以使用 griddata() 来获取它。我认为如果你的数据太大,子采样或正则化总是可能的。如果数据太大,也许您的输出图像与它相比总是很小,您可以利用这一点。
如果将 imshow() 与“extent”和“interpolation='nearest'”一起使用,您将看到数据以单元格为中心,并且范围提供单元格的下边缘(角)。另一方面,contour 假设数据以单元格为中心,X,Y 必须是单元格的中心。所以,你需要关心轮廓的输入域。简单的例子是:

x = np.arange(-10,10,1)
X,Y = np.meshgrid(x,x)
P = X**2+Y**2
imshow(P,extent=[-10,10,-10,10],interpolation='nearest',origin='lower')
contour(X+0.5,Y+0.5,P,20,colors='k')

我的测试告诉我 pcolormesh() 是一个非常缓慢的程序,我总是尽量避免它。 griddata 和 imshow() 对我来说总是一个不错的选择。

关于matplotlib - 将 pcolormesh 和轮廓放在同一个网格上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13996993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com