如何在三点联合分布上重现关于重叠轮廓的相同逻辑推理

如何解决如何在三点联合分布上重现关于重叠轮廓的相同逻辑推理

我有下图,我想应用相同的逻辑推理来绘制不同椭圆的所有轮廓和内容(由颜色标识)。

在这个例子中,在我下面的例子中绘制了 4 个矩阵,我有 5 个矩阵(见 5 个图例),但这并不重要。

这里是这个情节:

Logical of overlapping to reproduce

您会看到,对于每种颜色,我们都有一个浅色和深色着色器:这对应于 1 个置信度(1 C.L = 深色着色器)和 2 C.L(浅色着色器)。

就我的问题而言,我正在谈论非对角线框。黄色是最小的区域,这意味着我们有最好的约束(图例中的每种颜色对应一个协方差矩阵)。

现在,我想重现重叠的方式。这是我的脚本的第一次尝试(有 5 个矩阵,但我们不在乎,它只是一种额外的颜色和另外 2 个轮廓,深色和浅色)。

my last triplot

如您所见,这不是很漂亮和明确(我们甚至可以说,将轮廓区分为增加 Figure of Merit(图例中 FoM 的值)的函数是一团糟。

我已经设置了以下代码片段来处理不同颜色椭圆之间的这些优先级(FoM 与椭圆的面积成反比):

要修改的部分下方有一个正确和智能的重叠:

for tick in g.fig.axes[0].xaxis.get_major_ticks():
  tick.tick1line.zorder = 5

# Ordering applied here : try to be coherent in the overlapping
# by putting over all the smallest (yellow,1 C.L) and ends by lowest 
# FoM,here,blue light (2 C.L) 
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,[0.1,0.3,0.5,0.7,2,0.2,0.4,0.6,0.8,2]):
      c.zorder = z

单独的脚本可直接在:script to modify

对于非对角线框,我不想重现与开始时完全相同的数字(因为数据不相同)但我希望重现相同的重叠逻辑和透明度效果在第一张图上)。

您可以在此处找到包含脚本的整个存档:script to fix for overlapping

特别是设置轮廓之间的这种排序或优先级的代码片段在上面通过赋值 c.zorder = z 给出。

我已经发布了同样的问题,但只针对 2 个矩阵:old post with only 2 matrices to plot,i.e 2x2 = 4 contours ellipse。在这里,如果考虑每种颜色的 1 个 C.L 和 2 个 C.L 椭圆,我总共有 5x2 = 10 个轮廓。

PS:产生这个“triplot”(“tri”如“triangular”)的python库是getdist

主要例程是:

# Call triplot
g.triangle_plot([matrix1,matrix2,matrix3,matrix4,matrix5],names,filled = True,legend_labels = [],contour_colors = ['darkblue','purple','red','orange','yellow'],line_args = [{'lw':2,'color':'darkblue'},{'lw':2,'color':'purple'},'color':'red'},'color':'orange'},'color':'yellow'}]
                )

编辑 1:我认为我可以在所有不同的轮廓(1 C.L 和 2 C.L 置信度)之间添加透明度,但我担心它会使事情变得更加复杂。

最后一点:最小的黄色轮廓必须像示例的第一个图一样完全填充。但是 c.order = z 被设置为错误的值,这意味着像这样的不连贯结果。

从你的角度来看,什么是理想的 c.order 应用顺序以及哪个标准:我认为例如将盒子的最大 xlim/ylim 设置为最大的椭圆 2 CL(浅“深蓝色”轮廓),然后将所有其他轮廓作为其面积的函数推到最小的轮廓(黄色)。

顺便说一下,这是我在网上看到的一个透明度示例:

yellow over blue itself over red

也就是说,黄色超过蓝色本身超过红色:这就是我想在我的三重图上重现的内容(考虑一种类似的重叠排序)。

EDIT 2:我在没有考虑手动确定重叠优先级的代码片段的情况下进行了尝试。

通过删除此代码片段并再次绘制,我得到了这个数字:

Hidden policy of overlapping but results better

它比我的第一个图好一点(例如,黄色轮廓像橙色轮廓一样完全填充)。但我不知道重叠的优先级是如何完成的。我必须在 getdist 库的来源中查看更多信息,但这将是一项艰巨的任务。

我希望理解 getdist 中默认重叠的策略。

EDIT 3: 我意识到一些有趣的事情可以解决我关于重叠和透明度排序的问题,如 EDIT 1 的图中所示:对于我想要的图得到,目标是设置在黄色1.CL和2.CL之上,之后,橙色1 CL和2 CL等......按优先顺序。

技巧应该是为给定颜色保留 1 C.L 和 2 C.L 的轮廓,并且只让这些轮廓的 darline 线可见,而不考虑下面轮廓的颜色。

这样,我可以区分其他颜色的所有下部轮廓。

如果一些较低的轮廓在所有其他轮廓之上,那么将出现纯色并且不会应用透明度,因为它没有重叠。

实际上,在下面的 2 个图中(说明了我想要的渲染),我想要相同的但有一个变化,1 CL 纯黄色区域与线条轮廓和 2 CL 浅黄色区域等高线,它在所有其他等高线上。

first illustration

second illustration

例如,您可以在这两个图中看到黄色 1 C.L 不是真正的纯黄色。 2 C.L黄色也有同样的问题,不是真正的浅黄色。

现在,我必须:

  • 寻找如何为 1 C.L 和 2 C.L(而不仅仅是 2 C.L 置信度)设置轮廓

  • 应用透明度作为所有其他低于轮廓的轮廓线,并保持纯黄色 1 C.L 和浅黄色 2 C.L 完整。注意,我想要的是轮廓线的透明度,而不是颜色本身的透明度。

这有点棘手,我承认,但我认为这是可能的(使用 getdist,我必须搜索必要的选项或能够找到一种方法来实现这种重叠排序无需混合每种颜色的所有透明度。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res