代码之家  ›  专栏  ›  技术社区  ›  Shuvayan Das

在python中使用seaborn显示分布图上的峰度、偏度等指标

  •  0
  • Shuvayan Das  · 技术社区  · 6 年前

    我有以下数据:

    coll_prop_perioration coll_prop_12M coll_prop_6M coll_prop_3M
    0.04 0.04 0.06 0.08
    0 0 0 0 0
    0 0 0 0 0
    0.06 0.06 0.1 0
    0.38 0.38 0.25 0
    0.61 0.61 0.66 0.61
    0.01 0.01 0.02 0.02
    0.1 0.1 0.12 0.16
    0.04 0.04 0.04 0.09
    0.22 0.22 0.22 0.22
    0.72 0.72 0.73 0.72
    0.39 0.39 0.45 0.64
    

    我正在使用Seaborn的Distplot绘制以下分布:

    ######################## density plot #########################################
    f,axes=plt.子批次(2,2,figsize=(7,7),sharex=true)
    sns.distprot(数据[cols_viz[0]],color=“SkyBlue”,ax=axs[0,0])
    print(“歪斜度:%f”%data[cols-viz[0]].skew())
    print(“峰度:%f”%data[cols-viz[0]].kurt())
    
    sns.distplot(数据[cols_viz[1]],color=“olive”,ax=轴[0,1])
    print(“歪斜度:%f”%data[cols-viz[1]].skew())
    print(“峰度:%f”%data[cols-viz[1]].kurt())
    sns.distplot(数据[cols_viz[2]],color=“gold”,ax=轴[1,0])
    sns.distprot(数据[cols_viz[3]],color=“teal”,ax=轴[1,1])
    请显示())
    

    这确实为我提供了值,但我希望它们出现在相应的图中。

    我该怎么做?有人能帮我吗?

    我正在使用Seaborn的Distplot绘制以下分布:

    ######################## density plot #########################################
    f, axes = plt.subplots(2, 2, figsize=(7, 7), sharex=True)
    sns.distplot( data[cols_viz[0]] , color="skyblue", ax=axes[0, 0])
    print("Skewness: %f" % data[cols_viz[0]].skew())
    print("Kurtosis: %f" % data[cols_viz[0]].kurt())
    
    sns.distplot( data[cols_viz[1]] , color="olive", ax=axes[0, 1])
    print("Skewness: %f" % data[cols_viz[1]].skew())
    print("Kurtosis: %f" % data[cols_viz[1]].kurt())
    sns.distplot( data[cols_viz[2]] , color="gold", ax=axes[1, 0])
    sns.distplot( data[cols_viz[3]] , color="teal", ax=axes[1, 1])
    plt.show()
    

    enter image description here

    这确实给了我一些值,但我希望它们出现在相应的图中。

    我该怎么做?有人能帮我吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   MMelnicki    6 年前

    您可以使用 ax.text() 直接在绘图上打印文本。

    • 使用 'transform=ax.transaxs->code>作为 ax.text()的参数,命令将允许您缩放轴,以便文本框的位置可以始终相同;我使用x=0.97和y=0.91粗略地在右上角获取它
    • 这是测向仪:

      ‘coll_prop_6M’:0:0.06,1:0.0,2:0.0,3:0.1,4:0.25,5:0.66,6:0.02,7:0.12,8:0.04,9:0.22,10:0.73,11:0.45,\
      
      sns.distplot(data.iloc[:,0],color=“SkyBlue”,ax=轴[0,0])
      sns.distplot(data.iloc[:,2],color=“gold”,ax=轴[1,0])
      对于i,ax表示枚举(axs.remaze(-1)):
      背景色='white',颜色='xkcd:poo brown')
      fontweight='demibold',fontsize=10,verticalAlignment='top',horizontalAlignment='right',\
      请紧凑布局(
      
      唱for i, ax in enumerate(axes).reshape(-1)i范围从1-4。
      
    • .iloc[:,i]
    • 使用'transform=ax.transAxes命令允许您缩放轴,以便文本框的位置始终相同;我使用x=0.97和y=0.91粗略地将其置于右上角

    data = pd.DataFrame({'coll_prop_tenure': {0: 0.04, 1: 0.0, 2: 0.0, 3: 0.06, 4: 0.38, 5: 0.61, 6: 0.01, 7: 0.1, 8: 0.04, 9: 0.22, 10: 0.72, 11: 0.39}, \
                        'coll_prop_12m': {0: 0.04, 1: 0.0, 2: 0.0, 3: 0.06, 4: 0.38, 5: 0.61, 6: 0.01, 7: 0.1, 8: 0.04, 9: 0.22, 10: 0.72, 11: 0.39}, \
                        'coll_prop_6m': {0: 0.06, 1: 0.0, 2: 0.0, 3: 0.1, 4: 0.25, 5: 0.66, 6: 0.02, 7: 0.12, 8: 0.04, 9: 0.22, 10: 0.73, 11: 0.45}, \
                        'coll_prop_3m': {0: 0.08, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.61, 6: 0.02, 7: 0.16, 8: 0.09, 9: 0.22, 10: 0.72, 11: 0.64}})
    

    代码如下:

    f, axes = plt.subplots(2, 2, figsize=(7, 7), sharex=True)
    sns.distplot(data.iloc[:,0], color="skyblue", ax=axes[0,0])
    sns.distplot(data.iloc[:,1], color="olive", ax=axes[0,1])
    sns.distplot(data.iloc[:,2], color="gold", ax=axes[1,0])
    sns.distplot(data.iloc[:,3], color="teal", ax=axes[1,1])
    for i, ax in enumerate(axes.reshape(-1)):
        ax.text(x=0.97, y=0.97, transform=ax.transAxes, s="Skewness: %f" % data.iloc[:,i].skew(),\
            fontweight='demibold', fontsize=10, verticalalignment='top', horizontalalignment='right',\
            backgroundcolor='white', color='xkcd:poo brown')
        ax.text(x=0.97, y=0.91, transform=ax.transAxes, s="Kurtosis: %f" % data.iloc[:,i].kurt(),\
            fontweight='demibold', fontsize=10, verticalalignment='top', horizontalalignment='right',\
            backgroundcolor='white', color='xkcd:dried blood')
    plt.tight_layout()
    

    plotOutputResult