等高线图中的 Python Matplotlib 非线性缩放

标签 python matplotlib scaling contour

我在可视化等高线图中的某个数据集时遇到了一些问题。问题是我有一堆数据点 (X,Y,Z),其 Z 值范围从大约 2 到 0,其中许多有趣的特征位于 0 到 0.3 范围内。使用正常缩放比例,很难看到它们,如下图所示:

http://i.stack.imgur.com/7O8hH.png

现在,我已经想好了还能做什么。当然有对数缩放,但我首先需要考虑某种映射,我不是 100% 确定如何做。灵感来自 this question人们可能会想到 scaling(x) = Log(x/min)/Log(max/min) 类型的映射,它在该问题中工作得相当好。

后续也很有趣 discussed here .

他们在其中使用了某种ArcSinh 缩放函数。这似乎很好地放大了小特征,与整体成比例。

所以我想我的问题有两个方面。

  1. 如何缩放等值线图中的数据,使小振幅特征不会被异常值淹没?

  2. 您会使用上面提到的任何一种方法,还是使用完全不同的方法?

我是 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/

相关文章:

python - 为什么在用 python 编写 excel 文件时会得到像 [0, 1, 2, ...] 这样的行作为标题?

svg - 将matplotlib图形输出到SVG,文本作为文本,而不是曲线

python - Pandas :nan->无

python - 关闭 session 后使用SQLAlchemy实例

python - Python 迭代哪种方法更快?

python - 用 pyplot 画一个圆

text - Matplotlib - 当其他对象重叠时如何将文本设置在其他对象下方?

kubernetes - 是否可以在 cron 作业 pod 上使用 Kubernetes 自动缩放

r - 在 ggplot2 : How to add an extra variable with a different scale? 中绘制多个密度

iphone - 在iphone中缩放后保留标签的分辨率