sns.barplot函数的用法

,看了很多的教程,但还是看不懂说的是什么。最后靠自己慢慢的实验猜得到结论:

首先输入的x,y代表x和y轴,传入的是一系列数据。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

a = pd.DataFrame({'feature':[False, True,False,False, True, True]})
b = pd.DataFrame({'label':[True,False, True,True, True, True]})
m = pd.DataFrame({'yes':['a', 'b', 'b', 'a', 'b', 'a']})
c = pd.concat([a, b, m], axis=1)

现在我们想用sns.barplot来画出条状图:

我当时第一看到这个图形的时候很懵,因为我开始一维他们的概率图,但是加起来不为1。

现在,我们可以计算一下这个图是怎么来的:

在feature中有两个不同的特征(True, False),在feature[True]这个数据中((feature,label)|(True, False),(True, True),(True, True)),label[True]==2, label[False] == 1,所以把这些数据加起来。len(feature[True]) == 3, 而得到的label总和为2*True+1*False = 2, 所以得到的图像数值为2/3~0.666,所以可以看出来橙色的对应的数值约为0.666。

同理:对于feature(False),共有三个,得到的label和为3*True = 3, 随意3/3=1。可以看出蓝色的对应的约为1。

对于hue, hue表示x轴按hue输入的类别分类显示:

扫描二维码关注公众号,回复: 17407852 查看本文章

同理, 我们再来计算这个的分布:

在feature中,len(feature[True]) == 3,len(feature[True, a]) == 1, len(feature[True, b]) == 1 。len(feature[False]) == 3, len(feature[False, a]) == 2, len(feature[False, b]) == 1。

feature[True, a]对应的label只有一个元素label=True,总和为1*True = 1. 所以图形值为1/1=1.可以看到右边蓝色的对应为1。其他的三个同理也是这么算的。

其他的一些参数是调节图形的,其他的博客写的很清楚,这里不在复述。