Python等高线图中的Matplotlib非线性缩放
Python Matplotlib nonlinear scaling in contour plot
我在可视化等高线图中的某个数据集时遇到了一些问题。问题是我有一堆数据点 (X,Y,Z),其 Z 值范围从大约 2 到 0,其中许多有趣的特征位于 0 到 0.3 范围内。使用正常缩放比例,很难看到它们,如下图所示:
现在,我已经想好还能做什么了。当然有对数缩放,但我首先需要考虑某种映射,我不是 100% 确定如何做。受 this question 的启发,人们可以想到 scaling(x) = Log(x/min)/Log(max/min)
类型的映射,它在该问题中工作得相当好。
同样有趣的是后续 discussed here。
他们使用了某种 ArcSinh
缩放函数。这似乎很好地放大了小特征,与整体成比例。
所以我想我的问题有两个方面。
如何缩放我的等高线图中的数据,使小振幅特征不会被异常值淹没?
你会使用上面提到的任何一种方法,还是使用完全不同的方法?
我是 python 的新手,我总是对所有已经存在的东西感到惊讶,所以我确信可能有一种比我上面提到的任何东西都更好的内置方式。
为了完整性,我上传了 datafile here(上传网站是 robustfiles.com,快速 google 搜索告诉我这是一个值得信赖的网站,可以分享此类内容)
我用
绘制了上面的图
data = np.load("D:\SavedData\ThreeQubitRess44SpecHighResNormalFreqs.npy")
fig, (ax1) = plt.subplots(1,figsize=(16,16))
cs = ax1.contourf(X, Y, data, 210, alpha=1,cmap='jet')
fig.colorbar(cs, ax=ax1, shrink=0.9)
ax1.set_title("Freq vs B")
ax1.set_ylabel('Frequency (GHz)'); ax1.set_xlabel('B (arb.)')
问得好。
不要缩放数据。您将在具有许多缩放函数的范围内寻找折衷方案。
相反,使用 custom colormap. That way, you won't have to remap your actual data and can easily customize the visualization of the regions you'd like to highlight. Another example 可以在 scipy 食谱中找到,互联网上还有很多。
另一种选择是通过打断轴 like so
将图分成 2 个独立的区域
我在可视化等高线图中的某个数据集时遇到了一些问题。问题是我有一堆数据点 (X,Y,Z),其 Z 值范围从大约 2 到 0,其中许多有趣的特征位于 0 到 0.3 范围内。使用正常缩放比例,很难看到它们,如下图所示:
现在,我已经想好还能做什么了。当然有对数缩放,但我首先需要考虑某种映射,我不是 100% 确定如何做。受 this question 的启发,人们可以想到 scaling(x) = Log(x/min)/Log(max/min)
类型的映射,它在该问题中工作得相当好。
同样有趣的是后续 discussed here。
他们使用了某种 ArcSinh
缩放函数。这似乎很好地放大了小特征,与整体成比例。
所以我想我的问题有两个方面。
如何缩放我的等高线图中的数据,使小振幅特征不会被异常值淹没?
你会使用上面提到的任何一种方法,还是使用完全不同的方法?
我是 python 的新手,我总是对所有已经存在的东西感到惊讶,所以我确信可能有一种比我上面提到的任何东西都更好的内置方式。
为了完整性,我上传了 datafile here(上传网站是 robustfiles.com,快速 google 搜索告诉我这是一个值得信赖的网站,可以分享此类内容)
我用
绘制了上面的图data = np.load("D:\SavedData\ThreeQubitRess44SpecHighResNormalFreqs.npy")
fig, (ax1) = plt.subplots(1,figsize=(16,16))
cs = ax1.contourf(X, Y, data, 210, alpha=1,cmap='jet')
fig.colorbar(cs, ax=ax1, shrink=0.9)
ax1.set_title("Freq vs B")
ax1.set_ylabel('Frequency (GHz)'); ax1.set_xlabel('B (arb.)')
问得好。
不要缩放数据。您将在具有许多缩放函数的范围内寻找折衷方案。
相反,使用 custom colormap. That way, you won't have to remap your actual data and can easily customize the visualization of the regions you'd like to highlight. Another example 可以在 scipy 食谱中找到,互联网上还有很多。
另一种选择是通过打断轴 like so
将图分成 2 个独立的区域