Seaborn kde 图绘制概率而不是密度(没有条形的直方图)

2024-02-26

我有一个关于seaborn的问题kdeplot. In histplot可以设置哪一个stats https://seaborn.pydata.org/generated/seaborn.histplot.html他们想要(计数、频率、密度、概率)并且如果与kde论点,它也适用于kdeplot。但是,我还没有找到如何直接更改它的方法kdeplot如果我只想得到 kde 图的概率估计。或者,相同的结果应该来自histplot酒吧是否可以关闭,我也没有找到。那么如何才能做到这一点呢?

为了给出一些直观的例子,我只想有红色曲线,即。要么传递一个参数kdeplot to use probabilities,或从中删除条形histplot:

import seaborn

penguins = sns.load_dataset("penguins")
sns.histplot(data=penguins, x="flipper_length_mm", kde=True, stat="probability", color="r", label="probabilities")
sns.kdeplot(data=penguins, x="flipper_length_mm", color="k", label="kde density")
plt.legend()

多谢。


a 的 y 轴histplot with stat="probability"对应于某个值属于某个柱的概率。的价值0.23对于最高的条形,意味着鳍状肢长度介于两者之间的概率约为 23%189.7 and 195.6毫米(即特定垃圾箱的边缘)。请注意,默认情况下,遇到的最小值和最大值之间分布有 10 个 bin。

a 的 y 轴kdeplot类似于概率密度函数 https://en.wikipedia.org/wiki/Probability_density_function。曲线的高度与某个值位于宽度区间内的近似概率成正比1相应的 x 值。值为0.031 for x=191意味着有大约概率3.1 %长度介于190.5 and 191.5.

现在,直接获取a旁边的概率值kdeplot,首先需要选择 bin 宽度。然后,y 值可以除以该 bin,以对应于该宽度的 bin 内的 x 值。这PercentageFormatter提供了一种设置此类对应关系的方法,使用ax.yaxis.set_major_formatter(PercentFormatter(1/binwidth)).

下面的代码说明了 binwidth 为的示例5 mm,以及如何histplot可以匹配一个kdeplot.

import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.ticker import PercentFormatter

fig, ax1 = plt.subplots()
penguins = sns.load_dataset("penguins")
binwidth = 5
sns.histplot(data=penguins, x="flipper_length_mm", kde=True, stat="probability", color="r", label="Probabilities",
             binwidth=binwidth, ax=ax1)
ax2 = ax1.twinx()
sns.kdeplot(data=penguins, x="flipper_length_mm", color="k", label="kde density", ls=':', lw=5, ax=ax2)
ax2.set_ylim(0, ax1.get_ylim()[1] / binwidth)  # similir limits on the y-axis to align the plots
ax2.yaxis.set_major_formatter(PercentFormatter(1 / binwidth))  # show axis such that 1/binwidth corresponds to 100%
ax2.set_ylabel(f'Probability for a bin width of {binwidth}')
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
plt.show()

PS:仅显示kdeplot代码很可能是:

binwidth = 5
ax = sns.kdeplot(data=penguins, x="flipper_length_mm")
ax.yaxis.set_major_formatter(PercentFormatter(1 / binwidth))  # show axis such that 1/binwidth corresponds to 100%
ax.set_ylabel(f'Probability for a bin width of {binwidth}')

另一种选择可能是画一个histplot with kde=True,并删除生成的条形。为了便于解释,abinwidth应设置。和binwidth=1你会得到与密度图相同的 y 轴。 (kde_kws={'cut': 3})让 kde 平滑地接近零,默认 kde 曲线被数据的最小值和最大值切断)。

ax = sns.histplot(data=penguins, x="flipper_length_mm", binwidth=1, kde=True, stat='probability', kde_kws={'cut': 3})
ax.containers[0].remove() # remove the bars
ax.relim() # the axis limits need to be recalculated without the bars
ax.autoscale_view()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Seaborn kde 图绘制概率而不是密度(没有条形的直方图) 的相关文章

随机推荐

  • 当各个函数返回 inf 值时估计两个 gamma 函数的比率

    我正在估计两个伽玛函数的比率 两者的估计gamma x and gamma y 非常大 gt 10 300 但两者的比例应该相当小 from scipy special import gamma gamma x gamma y 不幸的是 有
  • C++ 正则表达式:哪个组匹配?

    我有一个正则表达式 其中包含通过 or 条件连接的各种子组 alpha digit 当我匹配字符串时1 a 2 我得到三个匹配项 1 a and 2 C 中有没有办法确定哪些子模式匹配 不直接 与std regex图书馆 匹配结果类负责子比
  • memcached 中的最大密钥长度和最大值大小是多少?

    我正在使用最新的 memcached 我可以知道最大密钥长度是多少 以及我们可以存储在 memcached 中的值的最大大小吗 如何将memcached与spring集成 有什么想法吗 如果你看一下source https github c
  • 参数字典包含不可为空类型的参数“id”的空条目

    我正在尝试通过以下方式从我的数据库检索数据id我的默认路由中的参数 routes MapRoute Default Route name controller action id URL with parameters new contro
  • 使用 SSL 联系 Active Directory

    我有一种根据 Active Directory 验证用户凭据的方法 我想将此方法与 SSL 结合使用 但无法使其工作 主要问题是我有一台服务器位于我们的网络之外 它称为 DMZ 吗 从那里我想联系我的活动目录 这就是我想使用 SSL 的原因
  • 导入 android.support 无法解决[重复]

    这个问题在这里已经有答案了 我收到一条错误消息 无法在该行解析 import android support import android support v4 app NotificationCompat 有没有人以前见过这个或者知道我能
  • MYSQL - 检索日期之间的时间戳

    All 我有一个 MYSQL 表 其中有一列称为时间戳 它是属于DATETIME数据类型 具有诸如 10 1 2009 3 25 08 PM 10 1 2009 3 30 05 PM 10 4 2009 3 40 01 PM 等值 我想编写
  • 使用选项“ -Xinject-code -extension ”插入 XJC+xsd+jxb 代码

    我正在尝试使用扩展程序 Xinject 代码 of xjc将一些代码添加到我生成的类中 对于以下简单的 xsd 架构
  • Pandas Dataframes.to_csv 截断长值

    Problem 我正在尝试在 python 中使用 Pandas 数据框存储大数据集 我的问题是 当我尝试将其保存到 csv 时 我的数据块被截断 如下所示 e 12 and 值1 值2 值3 值1853 值1854 解释 我需要将大量数据
  • C++/SQLite只输出一行数据

    我遇到一个问题 即我的 5 个测试行中只有一个会以 C 输出 我的代码是 include
  • Spring REST 模板 POST

    我正在使用 Spring 框架并尝试执行发布请求 我的 post 方法采用 url HttpMethod 和进入请求正文的参数 注意 network POSTRequest URL 中传递的 var URL 对于每次调用都是不同的 现在 如
  • 如何在 Kubernetes 中创建 post-init 容器?

    我正在尝试在 K8s 上创建一个 redis 集群 我需要一个 sidecar 容器来在所需数量的 redis 容器上线后创建集群 我有2个容器 redis和一辆边车 我正在运行它们statefulset有 6 个副本 我需要边车容器为每个
  • 使用 React、Redux 和 TypeScript 来更短地实现 mapDispatchToProps 的方法?

    我正在尝试找出一起使用 React Redux 和 TypeScript 时如何减少样板文件的数量 在这种情况下你可能不能 但想看看是否有人有想法 我目前有一个组件 它调度一个切换菜单的操作 在显示和隐藏菜单之间交替 为此 我定义了我的类
  • 如何使用异步任务

    异步任务问题 我已经遵循了一些教程 但我仍然不清楚 这是我目前拥有的代码 代码下面有一些问题 MainActivity 调用 SomeClassWithHTTPNeeds 然后调用 JSONParser AsyncTask 主要活动 Str
  • 访问同一类的另一个对象的受保护属性的方法

    一个对象的方法是否应该能够访问同一类的另一个对象的受保护属性 我正在用 PHP 进行编码 我刚刚发现一个对象的受保护属性可以被同一个类的方法访问 即使不是同一个对象 在该示例中 首先 您将在输出中得到 3 因为函数 readOtherUse
  • 在 for 循环中使用 str.split 时出现“ValueError 太多值无法解压”

    我之前就遇到过这个错误 原因很明显 但我在处理下面的代码片段时遇到了问题 usr bin python ACL group troubleshooters r user auto rx user nrpe r for e in ACL sp
  • printf("%d") 不显示我输入的内容

    My code printf Enter a number scanf d number printf d is what I entered n number I input 2 预期输出 2 is what I entered 实际输出
  • 如何在移动设备上从我的手机获取 console.log 输出?

    我的很多开发工作都是通过移动设备完成的 有没有办法让js访问console log输出within移动浏览器 目前 最好的方法是 挂钩 本机控制台并将输出显示为 HTML 同时仍然允许输出进入本机控制台 你可以很容易地实现你自己的版本 Re
  • VS 2003/2005 和 2008 共存是否存在任何已知问题?

    有谁知道 VS 2003 2005 和 2008 在同一安装上共存有任何问题吗 注册表配置单元都是独立的 net 框架都有自己的位置 我能想到的唯一问题是 Web 支持 可以是 1 1 或 2 0 但不能同时是两者 我错过了什么吗 我会遇到
  • Seaborn kde 图绘制概率而不是密度(没有条形的直方图)

    我有一个关于seaborn的问题kdeplot In histplot可以设置哪一个stats https seaborn pydata org generated seaborn histplot html他们想要 计数 频率 密度 概率