How to plot many kdeplots on one figure in python(在python中如何在一个图形上绘制多个kdedet)
本文介绍了在python中如何在一个图形上绘制多个kdedet的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下数据
name val
G.Kittle 4.0
G.Kittle 10.0
D.Hopkins 3.0
L.Fitzgerald 6.0
... ...
C.Kupp 18.0
R.Woods 21.0
N.Harry 7.0
S.Michel -6.0
每个name都有很多值,我想在同一张图上绘制每个名称的分布。我试着用hue参数来做这件事,但是这把所有的事情都搞砸了,把所有的分布都当作面积为1的,但是,我希望每个分布彼此独立,并且有它们自己的面积1。这有意义吗?我还希望它们都是灰色的,这是hue自然不允许的。
编辑:另外,当我使用hue时,我收到此错误UserWarning: Dataset has 0 variance; skipping density estimate.
推荐答案
sns.kdeplot()有一个参数common_norm=,该参数默认为True。在这种情况下,KDE曲线将与值的数量成比例缩放,使总面积和为1。设置common_norm=False将显示所有KDE曲线,使每条曲线的面积分别为1。
multiple=参数,默认为"layer",但也可以设置为"stack"或"fill"。在这种情况下,通用规范将是合适的。
所有曲线都可以着色为灰色,提供了一个调色板,作为带有"灰色"的颜色列表。列表的长度应与色调值的数量相同。由于所有色调值都相同,图例看起来会很奇怪。可以使用legend=False隐藏图例。
当一个色调值仅出现在一行时,不会绘制具有一个元素的kdedit,但会显示警告Dataset has 0 variance; skipping density estimate。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
df = pd.DataFrame({'name': np.random.choice([*'ABCD'], 100, p=[0.4, 0.3, 0.2, 0.1]),
'val': np.random.rand(100).cumsum()})
df.loc[0, 'name'] = 'E' # exactly one row with name 'E'
df['name'] = df['name'].astype('category')
sns.kdeplot(data=df, x='val', hue='name', palette=['grey'] * len(df['name'].cat.categories),
common_norm=False, legend=False)
plt.show()
这篇关于在python中如何在一个图形上绘制多个kdedet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:在python中如何在一个图形上绘制多个kdedet
基础教程推荐
猜你喜欢
- matplotlib 设置 yaxis 标签大小 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
