gpt4 book ai didi

Python Seaborn : Plot multiple distplot in Facetgrid

转载 作者:行者123 更新时间:2023-12-03 21:53:44 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

df:

RY         MAJ_CAT                  Value
2016 Cause Unknown 0.00227
2016 Vegetation 0.04217
2016 Vegetation 0.04393
2016 Vegetation 0.07878
2016 Defective Equip 0.00137
2018 Cause Unknown 0.00484
2018 Defective Equip 0.01546
2020 Defective Equip 0.05169
2020 Defective Equip 0.00515
2020 Cause Unknown 0.00050

我想绘制给定年份的值分布。所以我使用以下代码使用了 seaborn 的 distplot:
year_2016 = df[df['RY']==2016]
year_2018 = df[df['RY']==2018]
year_2020 = df[df['RY']==2020]
sns.distplot(year_2016['value'].values, hist=False,rug=True)
sns.distplot(year_2018['value'].values, hist=False,rug=True)
sns.distplot(year_2020['value'].values, hist=False,rug=True)

在下一步中,我想绘制给定年份 w.r.t MAJ_CAT 的相同值分布。所以我决定使用seaborn的Facetgrid,下面是代码:
g = sns.FacetGrid(df,col='MAJ_CAT')
g = g.map(sns.distplot,df[df['RY']==2016]['value'].values, hist=False,rug=True))
g = g.map(sns.distplot,df[df['RY']==2018]['value'].values, hist=False,rug=True))
g = g.map(sns.distplot,df[df['RY']==2020]['value'].values, hist=False,rug=True))

但是,当它运行上述命令时,它会引发以下错误:
 KeyError: "None of [Index([(0.00227, 0.04217, 0.043930000000000004, 0.07877999999999999, 0.00137, 0.0018800000000000002, 0.00202, 0.00627, 0.00101, 0.07167000000000001, 0.01965, 0.02775, 0.00298, 0.00337, 0.00088, 0.04049, 0.01957, 0.01012, 0.12065, 0.23699, 0.03639, 0.00137, 0.03244, 0.00441, 0.06748, 0.00035, 0.0066099999999999996, 0.00302, 0.015619999999999998, 0.01571, 0.0018399999999999998, 0.03425, 0.08046, 0.01695, 0.02416, 0.08975, 0.0018800000000000002, 0.14743, 0.06366000000000001, 0.04378, 0.043, 0.02997, 0.0001, 0.22799, 0.00611, 0.13960999999999998, 0.38871, 0.018430000000000002, 0.053239999999999996, 0.06702999999999999, 0.14103, 0.022719999999999997, 0.011890000000000001, 0.00186, 0.00049, 0.13947, 0.0067, 0.00503, 0.00242, 0.00137, 0.00266, 0.38638, 0.24068, 0.0165, 0.54847, 1.02545, 0.01889, 0.32750999999999997, 0.22526, 0.24516, 0.12791, 0.00063, 0.0005200000000000001, 0.00921, 0.07665, 0.00116, 0.01042, 0.27046, 0.03501, 0.03159, 0.46748999999999996, 0.022090000000000002, 2.2972799999999998, 0.69021, 0.22529000000000002, 0.00147, 0.1102, 0.03234, 0.05799, 0.11744, 0.00896, 0.09556, 0.03202, 0.01347, 0.00923, 0.0034200000000000003, 0.041530000000000004, 0.04848, 0.00062, 0.0031100000000000004, ...)], dtype='object')] are in the [columns]"

我不确定我在哪里犯了错误。有人可以帮我解决这个问题吗?

最佳答案

设置数据框

import pandas as pd
import numpy as np
import seaborn as sns

# setup dataframe of synthetic data
np.random.seed(365)
data = {'RY': np.random.choice([2016, 2018, 2020], size=400),
'MAJ_CAT': np.random.choice(['Cause Unknown', 'Vegetation', 'Defective Equip'], size=400),
'Value': np.random.random(size=400) }

df = pd.DataFrame(data)
更新答案
  • 来自 seaborn v0.11
  • 使用 sns.displot kind='kde'rug=True
  • 是用于在 FacetGrid 上绘制分布图的图形级界面。


  • 全部绘制 'MAJ_CAT'一起
    sns.displot(data=df, x='Value', hue='RY', kind='kde', palette='tab10', rug=True)
    enter image description here
    绘图 'MAJ_CAT'分别地
    sns.displot(data=df, col='MAJ_CAT', x='Value', hue='RY', kind='kde', palette='tab10', rug=True)
    enter image description here
    原答案
  • seaborn v0.11 , distplot 已弃用

  • 分布图
  • 合并原代码生成distplot

  • for year in df.RY.unique():
    values = df.Value[df.RY == year]
    sns.distplot(values, hist=False, rug=True)
    enter image description here
    分面网格
  • 正确配置映射并添加 hueFacetGrid

  • g = sns.FacetGrid(df, col='MAJ_CAT', hue='RY')
    p1 = g.map(sns.distplot, 'Value', hist=False, rug=True).add_legend()
    enter image description here

    关于Python Seaborn : Plot multiple distplot in Facetgrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62254125/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com