我在查看轮廓图中的某个数据集时遇到了一些麻烦。问题是我有一堆数据点(X,Y,Z),Z值的范围从大约2到0,其中许多有趣的特征位于0到0.3范围内。使用正常缩放,很难看到它们,如下图所示:
现在,我已经考虑过要做什么了。当然有对数缩放,但是我首先需要考虑某种映射,我不是百分之百确定如何做到这一点。受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.)')
答案 0 :(得分:2)
很棒的问题。
不要缩放数据。您将在具有许多缩放功能的范围内寻找妥协。
相反,请使用custom colormap。这样,您就不必重新映射实际数据,并且可以轻松自定义您想要突出显示的区域的可视化。 Another example可以在scipy cookbook中找到,在互联网上可以找到更多。
答案 1 :(得分:1)
另一个选择是通过打破轴like so
将绘图分成两个独立的区域