在 seaborn barplot 中绘制 value_counts()
Posted
技术标签:
【中文标题】在 seaborn barplot 中绘制 value_counts()【英文标题】:plotting value_counts() in seaborn barplot 【发布时间】:2015-10-06 05:59:12 【问题描述】:我无法在 seaborn 中获取条形图。这是我的可重现数据:
people = ['Hannah', 'Bethany', 'Kris', 'Alex', 'Earl', 'Lori']
reputation = ['awesome', 'cool', 'brilliant', 'meh', 'awesome', 'cool']
dictionary = dict(zip(people, reputation))
df = pd.DataFrame(dictionary.values(), dictionary.keys())
df = df.rename(columns=0:'reputation')
然后我想得到一个条形图,显示不同声誉的价值计数。我试过了:
sns.barplot(x = 'reputation', y = df['reputation'].value_counts(), data = df, ci = None)
和
sns.barplot(x = 'reputation', y = df['reputation'].value_counts().values, data = df, ci = None)
但两者都返回空白图。
知道我能做些什么来得到这个吗?
【问题讨论】:
【参考方案1】:仅使用countplot
,您也可以获得与.value_counts()
输出相同顺序的条形:
seaborn.countplot(data=df, x='reputation', order=df.reputation.value_counts().index)
【讨论】:
【参考方案2】:在最新的seaborn中,可以使用countplot
函数:
seaborn.countplot(x='reputation', data=df)
要使用barplot
,您需要这样的东西:
seaborn.barplot(x=df.reputation.value_counts().index, y=df.reputation.value_counts())
您不能将'reputation'
作为列名传递给x
,同时也传递y
中的计数。为x
传递“声誉”将使用df.reputation
的值(所有这些值,而不仅仅是唯一的值)作为x
值,而seaborn 无法将这些值与计数。因此,您需要将唯一值传递为x
,并将计数传递为y
。但是您需要调用 value_counts
两次(或对唯一值和计数进行其他排序)以确保它们正确匹配。
【讨论】:
以上是关于在 seaborn barplot 中绘制 value_counts()的主要内容,如果未能解决你的问题,请参考以下文章
seaborn可视化绘制双变量分组条形图(Annotating Grouped Barplot: Side-by-side)添加数值标签进行标记
如何在seaborn barplot中使用NaN值作为具有定义颜色的色调
如何在 seaborn / matplotlib 中绘制和注释分组条形