绘制显示颗粒百分比的等高线

2023-12-21

我试图制作类似于此图的内容:

这是一个等值线图,代表两个数据集中包含的 68%、95%、99.7% 的颗粒。

到目前为止,我已经尝试实现高斯 KDE 估计,并将这些粒子高斯绘制在轮廓上。

文件添加到这里https://www.dropbox.com/sh/86r9hf61wlzitvy/AABG2mbmmeokIiqXsZ8P76Swa?dl=0 https://www.dropbox.com/sh/86r9hf61wlzitvy/AABG2mbmmeokIiqXsZ8P76Swa?dl=0

from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
import numpy as np

# My data
x = RelDist
y = RadVel

# Peform the kernel density estimate
k = gaussian_kde(np.vstack([RelDist, RadVel]))
xi, yi = np.mgrid[x.min():x.max():x.size**0.5*1j,y.min():y.max():y.size**0.5*1j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))



fig = plt.figure()
ax = fig.gca()


CS = ax.contour(xi, yi, zi.reshape(xi.shape), colors='darkslateblue')
plt.clabel(CS, inline=1, fontsize=10)

ax.set_xlim(20, 800)
ax.set_ylim(-450, 450)
ax.set_xscale('log')

plt.show()

产生这个:

enter image description here]2 https://i.stack.imgur.com/F1Cqx.png

其中1)我不知道如何必然地控制高斯kde中的bin数,2)轮廓标签全部为零,3)我不知道确定百分位数。

任何帮助表示赞赏。


取自此matplotlib 中的示例 http://matplotlib.org/examples/pylab_examples/contourf_demo.html文档

您可以将数据 zi 转换为百分比刻度 (0-1),然后绘制等高线图。

您还可以在调用 plt.contour() 时手动确定等高线图的级别。

下面是一个包含 2 个随机生成的正态二变量分布的示例:

delta = 0.025
x = y = np.arange(-3.0, 3.01, delta)
X, Y = np.meshgrid(x, y)
Z1 = plt.mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = plt.mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = 10* (Z1- Z2)

#transform zi to a 0-1 range
Z = Z = (Z - Z.min())/(Z.max() - Z.min())

levels =  [0.68, 0.95, 0.997] 
origin = 'lower'
CS = plt.contour(X, Y, Z, levels,
              colors=('k',),
              linewidths=(3,),
              origin=origin)

plt.clabel(CS, fmt='%2.3f', colors='b', fontsize=14)

使用您提供的数据,代码也可以正常工作:

from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
import numpy as np

RadVel = np.loadtxt('RadVel.txt')
RelDist = np.loadtxt('RelDist.txt')
x = RelDist
y = RadVel

k = gaussian_kde(np.vstack([RelDist, RadVel]))
xi, yi = np.mgrid[x.min():x.max():x.size**0.5*1j,y.min():y.max():y.size**0.5*1j]
zi = k(np.vstack([xi.flatten(), yi.flatten()]))

#set zi to 0-1 scale
zi = (zi-zi.min())/(zi.max() - zi.min())
zi =zi.reshape(xi.shape)

#set up plot
origin = 'lower'
levels = [0,0.1,0.25,0.5,0.68, 0.95, 0.975,1]

CS = plt.contour(xi, yi, zi,levels = levels,
              colors=('k',),
              linewidths=(1,),
              origin=origin)

plt.clabel(CS, fmt='%.3f', colors='b', fontsize=8)
plt.gca()
plt.xlim(10,1000)
plt.xscale('log')
plt.ylim(-200,200)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绘制显示颗粒百分比的等高线 的相关文章

随机推荐

  • java.nio.file 的替代方案

    我在这个项目中使用 Android Studio 2 3 1 和 jdk 1 8 我导入一个项目 它使用 java nio file Files 和 java nio file Paths Java 8 中不存在包 java nio fil
  • 如何使用 JHipster 和 Hibernate Envers

    我无法弄清楚如何使用 Hibernate Envers 和 JHipster 我使用 PostgreSQL 来存储数据 最新的 Jhipster 2 6 0 我刚刚生成了一个 JHipster 应用程序 没有任何修改 User 域类扩展了
  • shell whoami 不等于 php shell_exec whoami?

    在 shell 中 我执行简单的 whoami 操作 然后得到 geoff 这很好 因为这就是我 在 php 文件中 我有 shell exec whoami 我没有得到任何人 在我看来 这似乎是一个差异 可以解释我最初的问题 imagem
  • PHP从3个变量中获取最大的数字[重复]

    这个问题在这里已经有答案了 可能的重复 返回具有最高值的变量 https stackoverflow com questions 5737305 return variable with the highest value 我试图想出一种简
  • Rails - 如何“合并”或将值附加到 URL 内的数组?

    我正在尝试在 URL 中传递一个数组 该数组工作正常 但我想知道如何插入或删除某些值 例如 我有一个链接 如下所示 http localhost 3000 pins genre ids 1 2 3 我想构建一组可以在此 URL 数组中插入或
  • 在 ASP.NET 内部运行 ASP.NET MVC 时,会话为 NULL

    如果我创建一个 ASP NET Web 应用程序项目 然后使用像这样定义的默认路由向其添加 ASP NET MVC 2 routes MapRoute Default Route name controller action id URL
  • 使用 JS 检测 MacOS、iOS、Windows、Android 和 Linux 操作系统 [重复]

    这个问题在这里已经有答案了 如何使用 JavaScript 检测 MacOS X iOS Windows Android 和 Linux 操作系统 我学到了很多关于window navigator对象及其属性 platform appVer
  • 客户端 JavaScript 应用程序和服务器端 HTTP API 之间的身份验证?

    我已经构建了一些通过 HTTP 工作的服务器端 API 仅适用于我的客户端应用程序 那么 是否可以在客户端和服务器端之间对应用程序进行身份验证 以及如何做 有两种选择 Sessions HTTP认证 会话背后的想法是 服务器向客户端发送一个
  • 使用 MS Graph API C# 读取用户电子邮件

    我正在尝试使用 MS Graph API 读取特定邮箱中的电子邮件 var client await GetClient getting a client with client id secret var users await clie
  • ASP.Net 转发器 item.DataItem 为 null

    在网页中 加载时 我用两个表填充数据集以及这些表之间的关系 然后将数据加载到具有嵌套转发器的转发器中 用户单击按钮后也可能发生这种情况 数据从 SQL 数据库加载 转发器数据源设置为回发后的数据集 但是 当 ItemDataBound 发生
  • 甲骨文。在两个过程中重用游标作为参数

    让我们创建两个测试程序 CREATE OR REPLACE PROCEDURE Aaaa Test1 pDog SYS REFCURSOR IS TYPE tDogRec is record objid varchar2 7 lim num
  • 布局类似于放射状菜单

    我必须设计这样的东西并为每个块添加点击事件 我应该如何继续 任何人都可以指导我吗 我知道现在回复已经太晚了 但这适用于那些现在在项目中需要此类功能的开发人员 看看这个演示项目github https github com beaucolli
  • 如何拒绝来自 iframe 的网站访问?

    我注意到一些网站出于安全原因拒绝从 iFrame 访问其注册和登录页面 我认为这是个好主意 我想知道他们需要什么设置才能做到这一点 因为我想在我的网站上做同样的事情 该网站是用 Java 构建的 并在 Apache Tomcat 上运行 如
  • 在 64 位 VBA 中使用 TaskDialogIndirect

    问题描述 我尝试让代码在 64 位 VBA 下工作 而在 32 位 VBA 下工作正常 它与通用控件任务对话框有关 我使用 Microsoft Access 但问题在其他 VBA 主机中应该是相同的 一个部分在 32 位和 64 位 VBA
  • Html.ImageGetter

    任何人都可以帮我解决如何使用 Html ImageGetter 使用 html 图像 src 标签显示图像吗 和例子或很好的教程 要首先从文本文件中的应用程序资源获取图像 请插入一个 html 图像标签 如下所示 img src my im
  • C# - 检查给定的 url 是文件还是目录?

    我有一个方法可以输入 http ftp 或本地路径 通过输入 url 我需要确定它是文件还是目录 Path GetExtension url 几乎可以正常工作 但如果目录以 有 开头以它的名字命名 那么这个检查就会失败 还有其他方法可以检查
  • Pylint 错误消息:“E1101:模块‘lxml.etree’没有‘strip_tags’成员’”

    我正在尝试lxml http lxml de 第一次使用 python 进行个人项目 我正在尝试使用 etree strip tags 从一些源代码中剥离标签 https stackoverflow com questions 468131
  • 有没有办法将资源的属性解析延迟到“执行”阶段?

    我有两个 LWRP 第一个涉及创建磁盘卷 对其进行格式化并将其安装在虚拟机上 我们将此称为资源cloud volume 第二个资源 它的作用并不重要 需要新格式化卷的 UUID 这是必需的属性 我们将调用此资源foobar 资源cloud
  • 如何检测两个 Golang net.IPNet 对象是否相交?

    如何检测两个Golang之间是否存在交集网络 IPNet https golang org pkg net IPNet物体 也就是如何检查both如果第一个网络是第二个网络的子网OR如果第二个网络是第一个网络的子网 Go 是否提供了任何实用
  • 绘制显示颗粒百分比的等高线

    我试图制作类似于此图的内容 这是一个等值线图 代表两个数据集中包含的 68 95 99 7 的颗粒 到目前为止 我已经尝试实现高斯 KDE 估计 并将这些粒子高斯绘制在轮廓上 文件添加到这里https www dropbox com sh