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

使用seaborn的简单柱状图表示

  •  3
  • Lodore66  · 技术社区  · 6 年前

    我有一个熊猫数据框,有26列数字数据。我想用26条条形图表示每列的平均值。使用熊猫绘图功能很容易做到这一点: df.plot(kind = 'bar') 但是,结果很难看,列标签经常被截断,即:

    Truncated labels plot from pandas

    我想用seaborn来代替,但不管我怎么努力,似乎都找不到办法。当然有一种简单的方法来绘制列平均值的条形图?谢谢

    4 回复  |  直到 6 年前
        1
  •  4
  •   Joe    4 年前

    您可以尝试以下操作:

    import matplotlib.pyplot as plt
    import seaborn as sns
    sns.set()
    
    fig = df.mean().plot(kind='bar')
    plt.margins(0.02)
    plt.ylabel('Your y-label')
    plt.xlabel('Your x-label')
    fig.set_xticklabels(df.columns, rotation = 45, ha="right")
    plt.show()
    

    enter image description here

        2
  •  3
  •   Lodore66    6 年前

    如果有人通过搜索找到这个,我找到的最简单的解决方案(我是OP)是使用 pandas.melt() 作用这会将所有列连接到单个列中,但会添加第二列,以保留与每个值相邻的列标题。此数据帧可以直接传递给seaborn。

        3
  •  2
  •   Rajesh Ve    5 年前

    df=pd。数据帧({'x':[0,1],'y':[2,3]})

    sns。条形图(x=df.mean()。指数,y=df。平均值())

    plt。show()

        4
  •  1
  •   Ami Tavory    6 年前

    你可以用 sns.barplot -特别是对于 horizontal barplots 更适合这么多类别-如下所示:

    import seaborn as sns
    
    df = pd.DataFrame({'x': [0, 1], 'y': [2, 3]})
    unstacked = df.unstack().to_frame()
    sns.barplot(
        y=unstacked.index.get_level_values(0),
        x=unstacked[0]);
    

    enter image description here