matplotlib 从imshow获取插值数据

3wabscal  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(196)

我使用matpotlib的imshow()来插值和绘制一些数据。这是一个2D数组。

im = ax.imshow(data2D,interpolation='sinc')

我想得到imshow后的'sinc'插值数据。我一直找不到任何方法来这样做。知道吗?谢谢,尼古拉斯

20jt8wwn

20jt8wwn1#

matplotlib C++ resampling code与matplotlib.image.resample函数接口,您可以自己导入和调用该函数。

rkue9o1l

rkue9o1l2#

作为Yannick Copin的回答的补充,其中写道
matplotlibC ++重采样代码与matplotlib.image.resample函数接口,您可以自己导入和调用该函数。
下面是使用私有函数matplotlib.image._resample进行插值的可视化演示

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.image import _resample
from matplotlib.transforms import Affine2D

np.random.seed(19680801)

grid = np.random.rand(4, 4)
scale_factor = 10
out_dimensions = (grid.shape[0]*scale_factor, grid.shape[1]*scale_factor)

fig, axs = plt.subplots(nrows=3)

transform = Affine2D().scale(scale_factor, scale_factor)
# Have to get an image to be able to resample
# Resample takes an _ImageBase or subclass, which require an Axes
img = axs[0].imshow(grid, interpolation='spline36', cmap='viridis')
interpolated = _resample(img, grid, out_dimensions, transform=transform)

axs[0].imshow(grid, cmap='viridis')
axs[1].imshow(grid, interpolation='spline36', cmap='viridis')
axs[2].imshow(interpolated, cmap='viridis')

相关问题