代码之家  ›  专栏  ›  技术社区  ›  aviss

用seaborn绘制多个直方图

  •  0
  • aviss  · 技术社区  · 6 年前

    我有一个36列的数据框。我想用seaborn一次性(6x6)绘制每个特征的直方图。基本上是再生的 df.hist()

    enter image description here

    测试数据帧:

    df = pd.DataFrame(np.random.randint(0,100,size=(100, 36)), columns=range(0,36))
    

    我的代码:

    import seaborn as sns
    # plot
    f, axes = plt.subplots(6, 6, figsize=(20, 20), sharex=True)
    for feature in df.columns:
        sns.distplot(df[feature] , color="skyblue", ax=axes[0, 0])
    
    1 回复  |  直到 6 年前
        1
  •  10
  •   ImportanceOfBeingErnest    6 年前

    f, axes = plt.subplots(6, 6, figsize=(20, 20), sharex=True)
    for ax, feature in zip(axes.flat, df.columns):
        sns.distplot(df[feature] , color="skyblue", ax=ax)
    

    Numpy数组是按行展平的,即您将在第一行中获得前6个特征,在第二行中获得特征6到11,等等。

    f, axes = plt.subplots(6, 6, figsize=(20, 20), sharex=True)
        for i, feature in enumerate(df.columns):
            sns.distplot(df[feature] , color="skyblue", ax=axes[i%6, i//6])
    

    e、 g.以上内容将逐栏填写子图。