我有一个包含26列数字数据的pandas数据框架。我想用26条柱状图表示每一列的平均值。这很容易用pandas绘图函数:df.plot(kind = 'bar')完成。然而,结果是丑陋的,列标签经常被截断,即:

我想用seaborn来做这件事,但无论我怎么努力,似乎都找不到一种方法。当然有一种简单的方法可以做一个简单的柱状平均值柱状图?谢谢。
发布于 2018-05-15 03:06:55
你可以使用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]);

发布于 2018-05-15 03:09:36
您可以尝试如下所示:
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()

发布于 2018-06-01 06:57:41
如果有人通过搜索找到它,我找到的最简单的解决方案(我是OP)是使用pandas.melt()函数。这会将所有列连接到单个列中,但会添加第二列,该列将保留与每个值相邻的列标题。此数据帧可以直接传递到seaborn。
https://stackoverflow.com/questions/50337237
复制相似问题