我有一个包含26列数字数据的pandas数据帧。我想用26个条形表示每个柱子的平均值。使用pandas绘图功能很容易做到:df.plot(kind = 'bar')
。但是,结果很难看,列标签经常被截断,即:
我喜欢用seaborn来做这件事,但无论我多么努力,似乎找不到方法。当然,有一个简单的方法来做一个简单的列平均值的情节?感谢。
答案 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()
答案 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]);
答案 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()