我在可视化等高线图中的某个数据集时遇到了一些问题。问题是我有一堆数据点 (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,快速谷歌搜索告诉我这是一个值得信赖的网站来分享这些东西)
我用
绘制了上面的图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 .这样,您就不必重新映射实际数据,并且可以轻松自定义要突出显示的区域的可视化效果。 Another example可以在 scipy 食谱中找到,互联网上还有很多。
关于等高线图中的 Python Matplotlib 非线性缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37569214/