简介
Seaborn 是以 matplotlib为底层,更容易定制化作图的Python库。
Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从 而使得作图更加容易。 在大多数情况下使用 Seaborn 就能做出很具有吸引力的图,而使用 matplotlib就能制作具有更多特色的图,换句话说, matplotlib 更加灵 活,可定制化,而 seaborn 像是更高级的封装,使用方便快捷。
distplot 直方图
#导入模块 import numpy as np import seaborn as sns #生成数据 x = np.random.normal(size=100) #绘制直方图 #设置多少个分组 bins= sns.displot(x,bins=20) #kde 是否显示数据分布曲线 默认值是False sns.displot(x,bins=20,kde=True) #设置风格样式 sns.set(style='white') sns.displot(x,bins=20,kde=True)
barplot条形图
#导入模块 import seaborn as sns #加载数据 titanic = sns.load_dataset('titanic') #绘制条形图 barplot sns.barplot(x='sex',y='survived',data=titanic) #按船舱分组 sns.barplot(x='sex',y='survived',data=titanic,hue='class')
boxplot 盒图
#导入模块 import seaborn as sns #加载数据 tips = sns.load_dataset('tips') #绘制盒图 boxplot sns.boxplot(x='day',y='total_bill',data=tips) #按时间time分组 sns.boxplot(x='day',y='total_bill',data=tips,hue='time')
小提琴图
小提琴图是箱图和密度图的一种结合图形。左右越宽代表当前数据 量越密集。
import seaborn as sns #加载数据 tips = sns.load_dataset('tips') #绘制小提琴图 sns.violinplot(x='day',y='total_bill',data=tips) #按性别分组 sns.violinplot(x='day',y='total_bill',data=tips,hue='sex') #男生女生合到一块 sns.violinplot(x='day',y='total_bill',data=tips,hue='sex',split=True) #去掉中间线 sns.violinplot(x='day',y='total_bill',data=tips,hue='sex',split=True,inner=None)
stripplot(分布散点图)
#加载模块 import seaborn as sns #导入数据 tips = sns.load_dataset('tips') #绘制分布散点图 stripplot() sns.stripplot(x='day',y='total_bill',data=tips) #jitter 震动 默认是True sns.stripplot(x='day',y='total_bill',data=tips,jitter=False)
swarmplot(分簇散点图)
#加载模块 import seaborn as sns #导入数据 tips = sns.load_dataset('tips') sns.swarmplot(x='day',y='total_bill',data=tips) #按性别分组 sns.swarmplot(x='day',y='total_bill',data=tips,hue='sex') #按时间分组 sns.swarmplot(x='day',y='total_bill',data=tips,hue='time')
scatterplot散点图
#加载模块 import seaborn as sns #导入数据 tips = sns.load_dataset('tips') sns.scatterplot(data=tips,x='total_bill',y='tip') #size参数指定点的大小 sns.scatterplot(data=tips,x='total_bill',y='tip',size='size') #hue 按是否吸烟进行分组 sns.scatterplot(data=tips,x='total_bill',y='tip',size='size',hue='smoker') #保存图片 from matplotlib import pyplot as plt sns.scatterplot(data=tips,x='total_bill',y='tip',size='size',hue='smoker',style='time') plt.savefig('scatterplot.jpg')
kdeplot双轴密度图
#导入模块 import numpy as np import pandas as pd import seaborn as sns #生成数据 # 生成 多元高斯正太分布 的数据 # 多元高斯正太分布是一堆正太分布向更多维度的推广,这种分布由其均值和协方差矩阵来确定 data = np.random.multivariate_normal([0,1], [(1,0.5),(0.5,1)], 1000) # 均值, [(1,0.5),(0.5,1)]协方差对称阵 df = pd.DataFrame(data,columns=['x','y']) #绘制密度图 sns.kdeplot(x='x',y='y',data=df) #color属性 修改颜色 sns.kdeplot(x='x',y='y',data=df,shade=True,color='red')
pointplot点图
#加载模块 import seaborn as sns #加载数据 titanic = sns.load_dataset('titanic') #绘制点图 sns.pointplot(data=titanic,x='sex',y='survived') #hue 进行分组 sns.pointplot(data=titanic,x='sex',y='survived',hue='class')
heatmap热力图
热力图(heatmap)是以矩阵的形式表示,数据值在图形中以颜色 的深浅来表示数量的多少,并可以快速到到大值的与最小值所在位 置。在机器学习的分类中经常用来作混淆矩阵的比较。
#导入模块 import numpy as np import seaborn as sns #加载航班数据 flights = sns.load_dataset('flights') #pivot 是DataFrame中的一个函数 data = flights.pivot('month','year','passengers') #绘制热力图 sns.heatmap(data=data) #参数 annot :True sns.heatmap(data=data,annot=True) #以整数的形式显示 sns.heatmap(data=data,annot=True,fmt='d') #去掉右侧图例 sns.heatmap(data=data,annot=True,fmt='d',linewidths=0.5,cbar=False) #修改色系 sns.heatmap(data=data,annot=True,fmt='d',linewidths=0.5,cbar=False,cmap='YlGnBu')
pairplot散布图矩阵
#加载模块 import seaborn as sns import matplotlib.pyplot as plt #加载鸢尾花数据 iris = sns.load_dataset('iris') #pairplot绘制 sns.pairplot(data=iris) #添加hue sns.pairplot(data=iris,hue='species')
lineplot线型图
#导入模块 import seaborn as sns #加载数据 iris = sns.load_dataset('iris') sns.lineplot(x='sepal_length',y='sepal_width',data=iris) #进行分组 sns.lineplot(x='sepal_length',y='sepal_width',data=iris,hue='species') #按性别分组 sns.lineplot(x='total_bill',y='tip',data=tips,hue='sex') # style = 'time' sns.lineplot(x='total_bill',y='tip',data=tips,hue='sex',size='smoker',style='time')
回归分析图
线性回归图通过大量数据找到模型拟合线性回归线。
#导入模块 import seaborn as sns iris = sns.load_dataset('iris') #lmplot() sns.lmplot(data=iris,x='petal_length',y='petal_width') #regplot() sns.regplot(data=iris,x='petal_length',y='petal_width')