简单的柱状图表意味着使用seaborn

时间:2018-05-14 18:58:02

标签: python pandas seaborn

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

Truncated labels plot from pandas

我喜欢用seaborn来做这件事,但无论我多么努力,似乎找不到方法。当然,有一个简单的方法来做一个简单的列平均值的情节?感谢。

4 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

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

答案 1 :(得分:1)

您可以使用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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

df = pd.DataFrame({'x':[0,1],'y':[2,3]})

sns.barplot(x = df.mean()。index,y = df.mean())

plt.show()