numpy - 如何摆脱contourplot contourf(平滑矩阵/二维数组)中的伪影?
问题描述
我在带有命名数据集的 hdf5 文件中有数据
#Data Aquisition and manipulation
file = h5py.File('C:/Users/machz/Downloads/20200715_000_Scan_XY-Coordinate_NV-centre_APD.h5', 'r')
filename = path.basename(file.filename)
intensity = file.get('intensity')
intensity = np.array(intensity)
x_range = file.get('x range')
x_range = np.array(x_range)
x_range = np.round(x_range,1)
z_range = file.get('z range')
z_range = np.array(z_range)
z_range=np.round(z_range,1)
其中强度是二维数组,x_range 和 z_range 是一维数组。现在我想平滑强度数据。原始数据看起来像这样:
通过使用seaborn.heatmap
:
heat_map = sb.heatmap(intensity, cmap="Spectral_r")
使用时matplotlib.contourf
通过
plt.contourf(intensity, 1000, cmap="Spectral_r")
我得到以下结果:
尽管它旋转了 180 度,但看起来还不错。但是我怎样才能摆脱 x 和 y 方向的失真并获得圆点呢?有没有更优雅的方法来平滑二维数组/矩阵?- 我读过一些关于内核密度估计(KDE)的东西,但它看起来很复杂。
编辑:应用 ´´´intensity_smooth = gaussian_filter(intensity, sigma=1, order=0)```的结果:
具有高强度的点正在溶解,但我想要在矩阵的两个值之间具有软过渡的尖锐强度最大值(见第一张图片)。
解决方案
不幸的是,我的回答令人误解。我有 2d 数据,想通过插值给定数据来摆脱盒子外观。为此,我在不同类型数据的线程插值方法中找到了 Andras Deak 的一个非常好的答案。绘图是通过使用matplotlib.contourf
I've got this 完成的:
必须更改刻度线,但结果很好。
推荐阅读
- xaml - 在 UWP 中,如何从一个图像转换到另一个图像?
- mongodb - 如何在聚合中使用 distinct
- php - ` ` 中的字符串是 PHP 的一部分吗?
- docker - 尝试运行 0.0.0.0:2181 端口失败的 hortonworks 的 docker 映像已分配
- cakephp-3.0 - 如何在 cakephp 3 中使用常量?
- google-cloud-platform - 使用 Dataflow Runner 运行时 Beam Sql 失败
- macos - 如何将 info.plist 嵌入到 SMJobBless 的特权助手中?
- performance - Apache Kudu 插入速度慢,排队时间长
- amazon-web-services - AWS DMS - 迁移时加入源表
- android - 如何在线性布局中保持 TextView 为中心