gpt4 book ai didi

python - 用 matplotlib pcolor 插值

转载 作者:太空狗 更新时间:2023-10-29 23:55:24 24 4
gpt4 key购买 nike

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

这就是我正在做的:

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

这导致了 block 状外观,关于如何获得更平滑的图形有什么想法吗?

最佳答案

您的深度是否在规则的网格上(即恒定间距)?如果是这样,您可以使用 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 是因为插值必须在最后一个索引上进行,而深度是数据的第一个索引。如果您愿意,可以将 kind 替换为 'linear'

关于python - 用 matplotlib pcolor 插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12081932/

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