需要源码和数据集请点赞关注收藏后评论区留言私信~~~
1. 直方图和密度曲线图
Seaborn中利用distplot( )和 kdeplot( )绘制直方图和密度曲线图,distplot( )为hist加强版,默认情况下绘制一个直方图,并嵌套一个对应的密度图
例:绘制iris数据集中Petal.Width的分布图
import matplotlib.pyplot as plt import pandas as pd df_iris = pd.read_csv('data//iris.csv') # df_iris.head() sns.set(color_codes = True) sns.distplot(df_iris['Petal.Width'])
使用distplot方法绘制的直方图与matplotlib是类似的。在distplot的参数中,可以选择不绘制密度图。其中的rug参数绘制毛毯图,可以为每个观测值绘制小细线(边际毛毯),也可以单独用rugplot进行绘制
distplot方法绘制的直方图
sns.distplot(df_iris['Petal.Width'],bins = 30,kde = False,rug = True)
直接绘制密度图
如果设置hist为False,则可以直接绘制密度图而没有直方图
sns.distplot(df_iris['Petal.Width'],hist = False,rug = True)
利用distplot函数可以同时绘制直方图、密度图和毛毯图,同时,这些分布图都有对应的专门函数。其中,kdeplot函数绘制密度图,rugplot用于绘制毛毯图
import matplotlib.pyplot as plt df_iris=pd.read_csv('D:\dataset\iris.csv') fig,axes=plt.subplots(1,2) sns.distplot(df_iris['Petal.Length'],ax=axes[0],kde=True,rug=True) #kde密度曲线,rug边际毛毯 sns.kdeplot(df_iris['Petal.Length'],ax=axes[1],shade=True) #shade阴影 plt.show()
distplot绘图
import matplotlib.pyplot as plt import seaborn as sns import numpy as np sns.set(palette = "muted",color_codes = True) rs = np.random.RandomState(10) d = rs.normal(size = 100) f,axes = plt.subplots(2, 2, figsize = (7, 7), sharex = True) sns.distplot(d, kde = False, color = "b", ax = axes[0,0]) sns.distplot(d, hist = False, rug = True, color = "r", ax = axes[0,1]) sns.distplot(d, hist = False,color = "g", kde_kws = {"shade":True}, ax = axes[1,0]) sns.distplot(d, color = "m", ax = axes[1,1]) plt.show()
2. 散点图
在Seaborn中,利用stripplot绘制各变量在每个类别的值。 例:在iris数据集中,显示Petal.Width在Species上值的分布
sns.set(style='white',color_codes=True) #设置样式 sns.stripplot(x=df_iris['Species'],y= df_iris['Petal.Width'],data=df_iris) sns.despine() #去坐标轴
由于散点图中数据众多,很多点会被覆盖,这时可以加入抖动(jitter=True)
如果需要看清每个数据点,可以使用swarmplot函数
sns.swarmplot(x=df_iris['Species'],y= df_iris['Petal.Width'],data=df_iris) sns.despine() #去坐标轴
3. 箱线图
有时候,散点图表达的值的分布信息有限,因此需要一些其它的绘图。箱线图可以观察四分位数、中位数和极值。Seaborn中利用boxplot( )绘制箱线图
df_iris=pd.read_csv('D:\dataset\iris.csv') sns.boxplot(x=df_iris['Species'],y = df_iris['Petal.Width']) plt.show()
4. 散点图矩阵
在seaborn中利用 pairplot()实现数据特征的两两对比。默认是所有特征,可以通过vars参数指定部分特征
seaborn.pairplot(data, hue=None, hue_order=None, palette=None, vars=None, x_vars=None, y_vars=None, kind='scatter', diag_kind='auto', markers=None, height=2.5, aspect=1, dropna=True, plot_kws=None, diag_kws=None, grid_kws=None, size=None)
pairplot主要展现的是变量两两之间的关系(线性或非线性,有无较为明显的相关关系)
df_iris = pd.read_csv('data//iris.csv') sns.set(style = "ticks") g = sns.pairplot(df_iris,vars = ['Sepal.Length', 'Petal.Length'])
5. 小提琴图
小提琴图其实是箱线图与核密度图的结合,箱线图展示了分位数的位置,小提琴图则展示了任意位置的密度,通过小提琴图可以知道哪些位置的密度较高。在图中,白点是中位数,黑色盒型的范围是下四分位点到上四分位点,细黑线表示须。外部形状即为核密度估计(在概率论中用来估计未知的密度函数,属于非参数检验方法之一)
sns.set_style("whitegrid") df_iris=pd.read_csv('D:\dataset\iris.csv') ax = sns.violinplot(x=df_iris['Petal.Length'])
6. 柱状图
在Seaborn中使用barplot函数绘制柱状图,默认情况下,绘制的y轴是平均值
df_iris=pd.read_csv('D:\dataset\iris.csv') sns.barplot(x=df_iris['Species'],y=df_iris['Petal.Length'],data=df_iris)
在柱状图中,经常会绘制类别的计数柱状图,在matplotlib中需要对DataFrame进行计算,而在Seaborn中则使用countplot函数即可
import seaborn as sns import matplotlib.pyplot as plt sns.set(style="darkgrid",font_scale=1.2) titanic = sns.load_dataset("titanic") plt.subplot(1,2,1) sns.countplot(x="class", hue="who", data=titanic) plt.subplot(1,2,2) sns.countplot(x="who", data=titanic, facecolor=(0, 0, 0, 0), linewidth=5, edgecolor=sns.color_palette("dark", 3)) plt.show()
7. 多变量图
在matplotlib中,为了绘制两个变量的分布关系,常使用散点图的方法。在Seaborn中,使用jointplot函数绘制一个多面板图,不仅可以显示两个变量的关系,还可以显示每个单变量的分布情况
sns.jointplot(x='Petal.Length',y='Petal.Width' ,data=df_iris)
在jointplot函数中,改变kind参数为kde,但变量的分布就用密度图来代替,而散点图则会被等高线图代替
sns.jointplot(x='Petal.Length',y='Petal.Width' ,data=df_iris,kind='kde')
8. 回归图
绘制回归图可以揭示两个变量间的线性关系。Seaborn中,使用regplot函数绘制回归图
sns.regplot(x='Petal.Length',y='Petal.Width' ,data=df_iris)
9. 关系类图
Seaborn中的relplot方法关注的是统计量之间的关系,利用kind参数设置,可以绘制出曲线图和散点图。Relplot方法的必选参数有以下几个: x,y为数据中变量的名称,一般为数值型数据
data是DataFrame类型的数据表;kind指定绘图类型,取值为“scatter”相当于scatterplot(),用来绘制散点图,取值“line”相当于lineplot(),用来绘制曲线。Kind缺省取值为"scatter"
绘制tips数据集中小费总额和小费的关系图
import seaborn as sns tips = sns.load_dataset('tips') sns.set(style="ticks",font_scale=1.5) sns.relplot(x="total_bill", y="tip", data=tips) # g = sns.relplot(x="total_bill", y="tip", hue="day", data=tips) g = sns.relplot(x="total_bill", y="tip",hue="day", col="time", data=tips)
10. 热力图
热力图是数据可视化项目中比较常用的数据显示方式。热力图通过颜色变化程度直观反应出热点分布,区域聚集等数据信息。热力图实现过程就是通过简单的数学变化,将离散的点信息映射为图像
下面绘制flights数据集中年份 月份和乘客数据的热力图
创作不易 觉得有帮助请点赞关注收藏~~~