Python发布的重叠作为1置信水平最小面积的函数-每个框最小曲面的优先级

Python发布的重叠作为1置信水平最小面积的函数-每个框最小曲面的优先级,python,matplotlib,overlap,z-order,covariance-matrix,Python,Matplotlib,Overlap,Z Order,Covariance Matrix,在python3中,我使用工具GetDist面临一个问题 1)目前,我只需调用一次绘图函数()就可以在同一个图形上绘制两个协方差矩阵。指定要绘制的协方差矩阵列表作为第一个输入就足以得到每个矩阵的(1西格玛,2西格玛)轮廓。这里是由2个协方差矩阵(填充区域对应于1西格玛置信水平(68%),阴影部分对应于2西格玛C.L(95%)生成的三重图示例。颜色标识每个矩阵(此处为蓝色和红色): 除了一个细节外,一切都很好:我希望每个框首先绘制最小的1 C.L(置信水平)轮廓,无论是红色或蓝色轮廓,但我希望对

在python3中,我使用工具
GetDist
面临一个问题

1)目前,我只需调用一次绘图函数()就可以在同一个图形上绘制两个协方差矩阵。指定要绘制的协方差矩阵列表作为第一个输入就足以得到每个矩阵的(1西格玛,2西格玛)轮廓。这里是由2个协方差矩阵(填充区域对应于1西格玛置信水平(68%),阴影部分对应于2西格玛C.L(95%)生成的三重图示例。颜色标识每个矩阵(此处为蓝色和红色):

除了一个细节外,一切都很好:我希望每个框首先绘制最小的1 C.L(置信水平)轮廓,无论是红色或蓝色轮廓,但我希望对于1 C.L和每个框,首先绘制最小的区域(我不记得是否必须设置更高或更低的
zorder
来执行此操作)

2)目前,我已经应用了文章中给出的方法,即代码片段:

from getdist import plots, gaussian_mixtures
samples1, samples2 = gaussian_mixtures.randomTestMCSamples(ndim=4, nMCSamples=2)
g = plots.get_subplot_plotter()
g.triangle_plot([samples1, samples2], filled=True, legend_labels = ['Contour 1', 'Contour 2'])

    for ax in g.fig.axes:
        geo = ax.get_geometry()
        if (geo[2]-1) // geo[0] > (geo[2]-1) % geo[0]:
           for c,z in zip(ax.collections, [17,19,21,18,20,21]):
               c.zorder = z 
在我的代码中,我实现了如下解决方案:

# Lower FoM 1 sigma disk before Higher FoM 2 sigma disk
for ax in g.fig.axes:
  geo = ax.get_geometry()
  if (geo[2]-1) // geo[0] > (geo[2]-1) % geo[0]:
    if (area2_1CL < area1_1CL):
      for c,z in zip(ax.collections, [0.6, 0.8, 2, 0.7, 0.9, 2]):
        c.zorder = z
# Larger surface 1 sigma disk before smallest surface 2 sigma disk
for ax in g.fig.axes:
  geo = ax.get_geometry()
  if (geo[2]-1) // geo[0] > (geo[2]-1) % geo[0]:
    if (area2_1CL < area1_1CL):
      ax.collections.zorder = [0.6, 0.8, 2, 0.7, 0.9, 2]
    else:
      ax.collections.zorder = [0.7, 0.9, 2, 0.6, 0.8, 2]

But I get this error with this snippet code above :

Traceback (most recent call last):
  File "triplot_FLAT_NO_GAMMA_dev.py", line 281, in <module>
    ax.collections.zorder = [0.6, 0.8, 2, 0.7, 0.9, 2]
AttributeError: 'list' object has no attribute 'zorder'
我可以在我的代码中计算参数area1_CL1和area2_CL1(
area=1./np.sqrt(np.det(协方差矩阵[2:4,2:4]))

如果有人看到我如何处理每个盒子,对每个盒子分别进行测试,比较2个1 C.L平面(图上最小的轮廓,没有最大的阴影),这将很好地告诉它,我不知道如何进一步

这样,我们将在一个框中自动看到1c.L处的轮廓,该框具有两个关节参数之间的最小曲面,因为它将在第一个平面绘制

编辑1:已在上给出部分解决方案