In [6]:
import warnings
warnings.simplefilter("ignore", FutureWarning)
distplot 直方图¶
In [7]:
#导入模块
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)
Out[7]:
<seaborn.axisgrid.FacetGrid at 0x22407b4d030>
In [8]:
#导入模块
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')
Out[8]:
<Axes: xlabel='sex', ylabel='survived'>
boxplot 盒图¶
In [9]:
#导入模块
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')
Out[9]:
<Axes: xlabel='day', ylabel='total_bill'>
小提琴图¶
In [10]:
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)
Out[10]:
<Axes: xlabel='day', ylabel='total_bill'>
stripplot(分布散点图)¶
In [11]:
#加载模块
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)
Out[11]:
<Axes: xlabel='day', ylabel='total_bill'>
swarmplot(分簇散点图)¶
In [12]:
#加载模块
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')
Out[12]:
<Axes: xlabel='day', ylabel='total_bill'>
scatterplot散点图¶
In [13]:
#加载模块
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双轴密度图¶
In [14]:
#导入模块
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')
Out[14]:
<Axes: xlabel='x', ylabel='y'>
pointplot点图¶
In [15]:
#加载模块
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')
Out[15]:
<Axes: xlabel='sex', ylabel='survived'>
heatmap热力图¶
In [20]:
import seaborn as sns
import matplotlib.pyplot as plt
# 加载航班数据集
flights = sns.load_dataset('flights')
# 使用 pivot 函数重构数据
data = flights.pivot(index='month', columns='year', values='passengers')
# 绘制热力图
plt.figure(figsize=(10, 6))
sns.heatmap(data=data, annot=True, fmt='d', linewidths=0.5, cbar=False, cmap='YlGnBu')
plt.title('Heatmap of Passengers by Month and Year')
plt.show()
pairplot散布图矩阵¶
In [17]:
#加载模块
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')
Out[17]:
<seaborn.axisgrid.PairGrid at 0x224090362c0>
lineplot线型图¶
In [21]:
#导入模块
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')
Out[21]:
<Axes: xlabel='sepal_length', ylabel='sepal_width'>
回归分析图¶
In [22]:
#导入模块
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')
Out[22]:
<Axes: xlabel='petal_length', ylabel='petal_width'>
In [ ]: