Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
等值线图中的Python Matplotlib非线性缩放_Python_Matplotlib_Scaling_Contour - Fatal编程技术网

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

等值线图中的Python Matplotlib非线性缩放,python,matplotlib,scaling,contour,Python,Matplotlib,Scaling,Contour,我在可视化等高线图中的某个数据集时遇到了一些问题。问题是,我有一组数据点(X,Y,Z),Z值范围从2到0,其中许多有趣的特性位于0到0.3的范围内。使用普通缩放,很难看到它们,如下图所示: 现在,我已经考虑过还有什么可以做的了。当然有对数标度,但我首先需要考虑某种映射,我不能100%确定如何做到这一点。受此启发,我们可以想到一个类型为scaling(x)=Log(x/min)/Log(max/min)的映射,它在这个问题上相当有效 同样有趣的是后续行动 他们使用了某种arcinhscaling

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

现在,我已经考虑过还有什么可以做的了。当然有对数标度,但我首先需要考虑某种映射,我不能100%确定如何做到这一点。受此启发,我们可以想到一个类型为
scaling(x)=Log(x/min)/Log(max/min)
的映射,它在这个问题上相当有效

同样有趣的是后续行动

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

我想我的问题有两个方面

  • 如何缩放等高线图中的数据,使小振幅特征不会被异常值冲走

  • 你会使用上面提到的任何一种方法,还是使用完全不同的方法

  • 我对python还比较陌生,我经常对已经存在的所有东西感到惊讶,因此我相信可能有一种内置方式比我上面提到的任何东西都要好

    为了完整性,我上传了(上传网站是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.)')
    
    好问题

    不要缩放数据。您将在具有许多缩放函数的范围内寻找折衷方案


    取而代之的是,使用一个。这样,您就不必重新映射实际数据,并且可以轻松自定义要高亮显示的区域的可视化。可以在scipy cookbook中找到,在互联网上还有很多。

    另一个选择是通过断开轴将绘图分成两个单独的区域

    作为注释,例如,您可以看到6.2 GHz和-0.6 B左右的一些特性。这是我想要更明确的内容。这是一个伟大的见解!我将仔细阅读文档,并尝试处理这些问题。不过,我并不完全清楚,这不仅仅会将缩放问题转移到彩色贴图上。第一件事当然是选择对比度很好的颜色(这也不是小事),但我仍然需要确保过渡是这样的,我感兴趣的细节变得可见。假设我在0到1的范围内从蓝色变为红色,但我的大部分详细信息都在0到0.2的范围内。那么我仍然需要一些特殊的比例来绘制彩色地图,对吗?@user129412我理解这样做是否会将缩放问题转移到彩色地图上。但是颜色贴图可以完全任意设置。要使用数据上的缩放函数实现这一点,您需要寻找分段连续函数。通过更改颜色贴图,您可以更快地完成此操作。至于选择,您确实可以使其在边界处不连续(例如,1:红色、0.2:蓝色,然后是灰度),或者仅“拉伸”cmap:blue到橙色(表示[0.2]),橙色到红色(表示[0.2])(.2,1)。是的,这是有道理的。我认为彩色地图上有足够多的文档,所以我应该能够自己弄清楚。谢谢!