本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

分布绘图

分布绘图分为单一变量分布,多变量分布,成对绘图。以下进行讲解。

一、单变量分布:

单一变量主要就是通过直方图来绘制。在seaborn中直方图的绘制采用的是distplot,其中distdistribution的简写,不是histogram的简写。示例代码如下:

sns.set(color_codes=True) titanic = sns.load_dataset("titanic") titanic = titanic[~np.isnan(titanic['age'])] sns.distplot(titanic['age'])

效果图如下:
distplot1.png

有以下常用参数:

  1. kde(核密度曲线):这个代表是否要显示kde曲线,默认是显示的,如果显示kde曲线,那么y轴表示的就是概率,而不是数量。也可以设置为False关掉。示例代码如下:

    sns.distplot(titanic['age'],kde=False)

    distplot2.png

  2. bins:代表这个直方图显示的数量。也可以通过自己设置。示例代码如下:

    sns.distplot(titanic['age'],bins=30)

    distplot3.png

  3. rug:代表是否需要显示底部的胡须下线,下面的胡须线越密集的地方,说明数据量越多。示例代码如下:

    sns.distplot(titanic['age'],rug=True)

    distplot4.png

二、二变量分布:

多变量分布图可以看出两个变量之间的分布关系。一般都是采用多个图进行表示。多变量分布图采用的函数是jointplot

2.1. 散点图:

示例代码如下:

tips = sns.load_dataset("tips") g = sns.jointplot(x="total_bill", y="tip", data=tips)

效果图如下:
jointplot1.png

通过设置kind='reg'可以设置回归绘图和核密度曲线。示例代码如下:

g = sns.jointplot(x="total_bill", y="tip", data=tips,kind="reg")

效果图如下:
jointplot2.png

2.2. 六边形图:

对于一些数据量特别大的数据,用散点图不太利于观察,比如查看奥运会中国运动员的身高和体重分布情况,如果用散点图将会是以下的效果:

athletes = pd.read_csv("athlete_events.csv") china_athletes = athletes[athletes['NOC']=='CHN'] sns.jointplot(x="Height",y="Weight",data=china_athletes)

jointplot3.png

针对这种数据量比较大的情况,可以采用六边形图来绘制,也就是将之前的散点变成六边形,六边形有一个区间大小,之前这些点落在这个六边形中越多颜色越深。示例代码如下:

sns.jointplot(x="Height",y="Weight",data=china_athletes,kind="hex")

默认情况,在x轴的区间内,可以展示100个六边形,所以默认情况下六边形的尺寸会比较小,如果想要展示得更大一点,那么可以设置减少六边形的个数,通过gridsize设置。示例代码如下:

sns.jointplot(x="Height",y="Weight",data=china_athletes,kind="hex",gridsize=20)

jointplot4.png

更多请参考:

2.4. jointplot其他常用参数:

  1. x,y,data:绘制图的数据。
  2. kindscatterregresidkdehex
  3. color:绘制元素的颜色。
  4. height:图的大小,图会是一个正方形。
  5. ratio:主图和副图的比例,只能为一个整形。
  6. space:主图和副图的间距。
  7. dropna:是否需要删除x或者y值中出现了NAN的值。
  8. marginal_kws:副图的一些属性,比如设置binsrug等。

三、成对绘图(pairplot):

pairplot可以把某个数据集中某几个字段之间的关系图一次性绘制出来。比如iris鸢尾花数据,我们想要看到petal_widthpetal_heightsepal_width以及sepal_height之间的关系,那么我们就可以通过pairplot来绘制。示例代码如下:

sns.pairplot(iris,vars=['sepal_length',"sepal_width",'petal_length','petal_width'])

效果图如下:
pairplot1.png

默认情况下,对角线的图(x和y轴的列相同)是直方图,其他地方的图是散点图,如果想要修改这两种图,可以通过diag_kindkind来实现。其中这两个参数可取的值为:

  1. diag_kindauto, hist, kde
  2. kindscatter, reg

示例代码如下:

sns.pairplot(iris,vars=['sepal_length',"sepal_width",'petal_length','petal_width'],diag_kind="kde",kind="reg")

pairplot2.png

1497人已阅读,今天你学习了吗?

添加新回复
目录