繁体   English   中英

使用matplotlib pcolor进行插值

[英]interpolation with matplotlib pcolor

我有两个numpy数组,第一个是(30,365)并且包含全年30个深度的值,第二个数组是(30,1)并且包含对应于深度的实际深度(以米为单位)第一个数组。 我想绘制第一个数组,以便根据第二个数组缩放深度,但我也希望对数据进行插值(前几个深度相对靠近在一起,而较低的深度相距较远,为pcolor图像提供了块状外观。)

这就是我正在做的事情:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 365, 1)
X, Y = np.meshgrid(x, depth)    #depth is the (30, 1) array

plt.pcolor(X, -Y, data)         #data is the (30, 365) array

这导致了块状外观,关于如何获得更平滑外观的任何想法?

您的深度是否在规则网格上(即恒定间距)? 如果是这样,您可以使用imshow并使用extent关键字和aspect='auto'设置范围。 否则,您有两个选择。

你可以改用pcolormesh并使用shading='gouraud' 这将有助于清晰的颜色量化,但不如插值。

第二种选择是将数据内插到新的常规深度网格,因此您可以使用imshow和不同的插值选项。 例如,要仅沿深度方向进行插值,可以使用scipy的interpolate.interp1d

from scipy.interpolate import interp1d

fint = interp1d(depth, data.T, kind='cubic')
newdata = fint(newdepth).T

添加.T是因为插值必须在最后一个索引上,而深度是数据的第一个索引。 如果您愿意,可以用'linear'替换kind

不, pcolor不做插值。 您可以尝试NonUniformImage甚至是imshow 看看这里的例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM