Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。
Python中的一个制图工具库,可以制作出吸引人的、信息量大的统计图
在Matplotlib上构建,支持numpy和pandas的数据结构可视化。
多个内置主题及颜色主题
可视化单一变量、二维变量用于比较数据集中各变量的分布情况
可视化线性回归模型中的独立变量及不独立变量
Seaborn官网:http://seaborn.pydata.org/index.html
(1)在cmd执行下面pip命令安装:
pip install Seaborn
(2)导包如下:
import seaborn as sns
seaborn的风格设置主要分为两类,其一是style(风格)设置,二是context(环境)设置。
设置风格的三种方法:
风格主要有5种:
darkgrid(默认风格)
whitegrid
dark
white
ticks
sns.set_style("darkgrid") # 灰色网格背景(默认风格)
sns.set_style("whitegrid") # 白色网格背景
sns.set_style("dark") # 灰色背景
sns.set_style("white") # 白色背景
sns.set_style("ticks") # 四周加边框和刻度
Seaborn绘制的直方图会自动添加间隔,使得图像更加清晰,相比之下,Matplotlib绘图风格较为简单。此外,不同的Seaborn风格之间主要区别在于绘图背景色的不同,这些风格也提供了更多的可定制化选项和更方便的API,使得绘制高质量的图表变得更加容易和快捷。
设置环境的方法也有3种:
set:通用设置接口
set_context:环境设置专用接口,设置后全局绘图环境随之改变
plotting_context:设置当前图(axes级)的绘图环境,同时返回设置后的环境系列参数,支持with关键字用法
绘图环境主要有4种:
sns.plotting_context("notebook") # 默认
sns.plotting_context("paper")
sns.plotting_context("talk")
sns.plotting_context("poster")
4种默认绘图环境最直观的区别在于字体大小的不同,而其他方面也均略有差异。详细对比下4种绘图环境下的系列参数设置:
调色盘是一组颜色的序列,用于在多个数据点之间进行区分。Seaborn提供了多种调色盘,可以根据不同的需求来进行选择。下面是Seaborn库调色盘设置的教程。
1、查看Seaborn自带的调色盘
Seaborn自带了多个调色盘,可以通过sns.color_palette()函数来查看。该函数默认返回当前设置的调色盘,也可以通过参数来指定不同的调色盘。
import seaborn as sns
import matplotlib.pyplot as plt
current_palette = sns.color_palette()
sns.palplot(current_palette)
默认的调色盘有10种颜色。这些颜色都有6种风格。分别是: deep , muted , pastel ,bright, dark, colorblind。这几种风格的颜色不变,主要调整的是亮度和饱和度:
换一个风格看看:
import seaborn as sns
import matplotlib.pyplot as plt
current_palette = sns.color_palette('deep')
sns.palplot(current_palette)
2、 设置调色盘
在Seaborn中,可以通过sns.set_palette()函数来设置调色盘。该函数接收一个颜色序列作为参数,可以是一个元组、列表或者字符串。
sns.set_palette("husl")
3、使用调色盘
在Seaborn中,可以通过hue参数来使用调色盘。hue参数用于指定用于分组的列名,然后Seaborn会自动使用调色盘来区分不同的组别。
sns.scatterplot(x="sepal_length", y="sepal_width", hue="species", data=iris)
4、自定义调色盘
如果Seaborn自带的调色盘不能满足我们的需求,我们也可以自定义调色盘。可以通过sns.color_palette()函数来创建自定义调色盘。
my_palette = sns.color_palette(["#F8766D", "#7CAE00", "#00BFC4"])
sns.set_palette(my_palette)
在这里,我们创建了一个包含三种颜色的调色盘,并将其设置为当前调色盘。然后可以在绘图时使用hue参数来使用自定义调色盘。
官方数据集下载地址(这里自行下载后面会使用到): https://github.com/mwaskom/seaborn-data
常用数据集介绍:
1、tips:一个包含餐厅小费数据的数据集,包括总账单金额、小费金额、性别、是否吸烟、日期、时间和用餐人数等信息。
2、iris:一个包含鸢尾花数据的数据集,包括花萼长度、花萼宽度、花瓣长度、花瓣宽度和鸢尾花的种类等信息。
3、titanic:一个包含泰坦尼克号乘客数据的数据集,包括乘客姓名、年龄、性别、船舱等级、票价、是否幸存等信息。
4、flights:一个包含航班数据的数据集,包括年份、月份和乘客数量等信息。
5、fmri:一个包含功能磁共振成像数据的数据集,包括时间、被试编号、区域编号和信号值等信息。
这些数据集可以通过Seaborn直接加载和使用,方便用户进行数据可视化和分析。
Seaborn模块的Relational plots(关系图)用于探索两个或多个变量之间的关系。它可以帮助我们理解数据中的模式、趋势和异常值。Seaborn模块中的Relational plots包括以下几种:
scatterplot(散点图):用于绘制两个变量之间的关系,每个数据点表示为一个点。可以使用不同的颜色和大小来表示第三个变量。
lineplot(线图):用于绘制两个变量之间的关系,每个数据点表示为一个点,并使用线条连接它们。
relplot(关系图):可以绘制各种关系图,包括散点图、线图、折线图、面积图等。
pairplot(成对关系图):用于绘制数据集中每对变量之间的关系,同时显示每个变量的直方图和密度图。
通过使用Seaborn模块的Relational plots,我们可以快速可视化数据集中的多个变量之间的关系,并发现潜在的模式和趋势。
scatterplot(散点图)用于绘制两个变量之间的关系,每个数据点表示为一个点,它可以帮助我们理解两个变量之间的相关性和分布情况。
seaborn.scatterplot(
data=None, *,
x=None, y=None, hue=None, size=None, style=None,
palette=None, hue_order=None, hue_norm=None,
sizes=None, size_order=None, size_norm=None,
markers=True, style_order=None, legend="auto", ax=None,
**kwargs
):
全部参数说明:
其中,x、y、hue、size和style参数是必需的,其他参数都是可选的。
(1)先来个简单的散点图看看效果:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid") # seaborn默认风格
# 创建数据
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
# 绘制散点图
sns.scatterplot(x=x, y=y)
# 显示图形
plt.show()
(2)设置其他参数绘制更好的散点图:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid") # seaborn默认风格
# 创建数据
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
z = np.random.choice(['A', 'B', 'C'], size=1000)
# 绘制散点图
sns.scatterplot(x=x, y=y, hue=z, style=z, markers=['*'], palette='Set2')
# 显示图形
plt.show()
在scatterplot()函数中,markers参数用于设置散点的形状,palette参数用于设置颜色方案。可以根据实际需求选择合适的参数来绘制出更加美观的散点图。
Seaborn模块中的lineplot函数用于绘制线图,可以用于展示数据的趋势和变化。
seaborn.lineplot(
data=None, *,
x=None, y=None, hue=None, size=None, style=None, units=None,
palette=None, hue_order=None, hue_norm=None,
sizes=None, size_order=None, size_norm=None,
dashes=True, markers=None, style_order=None,
estimator="mean", errorbar=("ci", 95), n_boot=1000, seed=None,
orient="x", sort=True, err_style="band", err_kws=None,
legend="auto", ci="deprecated", ax=None, **kwargs
)
常用参数说明:
x, y:指定绘制线图的x轴和y轴数据。
data:指定绘图数据集。
hue:指定分类变量,根据该变量的不同取值,绘制不同颜色的线条。
style:指定线条的样式。
markers:指定线条上的标记点的样式。
dashes:指定线条的虚线样式。
(1)这里我们导入官方的数据玩玩,然后存到本地电脑的某个位置, 再读取文件, 这是需要加上 data_home
这个参数就行了:
官方数据下载地址(这里自行下载后面会使用到): https://github.com/mwaskom/seaborn-data
import seaborn as sns
import matplotlib.pyplot as plt
# 这里需要修改你下载数据的保存路径
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.lineplot(x='day', y='total_bill', hue='sex', style='sex', data=data)
plt.show()
运行结果:
(2)设置其他参数整点复杂的:
import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('fmri', data_home="D:\seaborn-data-master")
sns.lineplot(x="timepoint", y="signal",hue="event", style="event",markers=True, dashes=False, data=data)
plt.show()
Seaborn 模块中的 relplot() 函数可以用于绘制多个变量之间的关系图。它可以帮助我们快速地进行多变量分析和可视化。relplot() 函数可以接受多种参数来控制绘图的样式和数据。
seaborn.relplot(
data=None, *,
x=None, y=None, hue=None, size=None, style=None, units=None,
row=None, col=None, col_wrap=None, row_order=None, col_order=None,
palette=None, hue_order=None, hue_norm=None,
sizes=None, size_order=None, size_norm=None,
markers=None, dashes=None, style_order=None,
legend="auto", kind="scatter", height=5, aspect=1, facet_kws=None,
**kwargs
)
常用参数说明(其他kind参数最重要):
(1)默认情况散点图:
import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
# 默认情况散点图
sns.relplot(x='total_bill', y='tip', hue='smoker', style='time', size='size', data=data)
plt.show()
import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('fmri', data_home="D:\seaborn-data-master")
# 设置kind='line'绘制折线图
# 设置hue为event绘制不同的颜色
# 设置col为region个数来绘制指定个数的图
# 设置style为event修改线条的样式
sns.relplot(x="timepoint",y="signal",kind="line",hue="event",col="region",style="event",data=data)
plt.show()
Seaborn 模块中的 pairplot() 函数可以用于绘制多个变量之间的成对关系图。它可以帮助我们快速地进行多变量分析和可视化。
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, corner=False, dropna=False,
plot_kws=None, diag_kws=None, grid_kws=None, size=None,
)
常用参数说明:
import seaborn as sns
import matplotlib.pyplot as plt
data = sns.load_dataset('iris', data_home="D:\seaborn-data-master")
sns.pairplot(data, hue='species')
plt.show()
Seaborn库中的stripplot(分类散点图)是一种常用的Categorical plot(分类图),用于可视化单个分类变量的值分布。它可以显示每个数据点的位置,并且可以通过jitter参数添加一些随机噪声,以避免数据点之间的重叠。
seaborn.stripplot(
data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
jitter=True, dodge=False, orient=None, color=None, palette=None,
size=5, edgecolor="gray", linewidth=0,
hue_norm=None, native_scale=False, formatter=None, legend="auto",
ax=None, **kwargs
)
常用参数说明:
x, y:指定要绘制的变量名,可以是数据集中的列名或列索引。
hue:指定另一个分类变量的变量名,可以通过不同的颜色来区分。
data:指定要使用的数据集。
jitter:控制数据点的随机噪声程度,可以是True或False,也可以是一个小数,表示噪声的大小。
dodge:当hue参数存在时,控制是否将不同hue值分开绘制。
order:指定x变量的顺序。
hue_order:指定hue变量的顺序。
palette:指定颜色调色板。
size, edgecolor, linewidth:控制数据点的大小、边缘颜色和边缘线宽。
alpha:控制数据点的透明度。
orient:控制绘制方向,可以是"v"(垂直)或"h"(水平)。
marker:控制数据点的形状,可以是"."(圆点)、“o”(实心圆)等。
ax:指定要绘制的Axes对象。
kwargs:其他可选参数,如标签、标题等。
(1)普通绘图
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.stripplot(x="day", y="total_bill", data=data)
plt.show()
(2)多加几个参数试试效果
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.stripplot(x="day", y="total_bill", hue="smoker",data=data, jitter=True,palette="Set2", dodge=True)
plt.show()
(3)修改为横向散点图,只需将x、y的值对调:
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.stripplot(x="total_bill", y="day", hue="smoker",data=data, jitter=True,palette="Set2", dodge=True)
plt.show()
Seaborn库中的swarmplot(分布蜂群图)是一种常用的Categorical plot(分类图),用于可视化单个分类变量的值分布。与stripplot(分类散点图)类似,它可以显示每个数据点的位置,但是它们会自动调整点的位置,使它们不会重叠。
seaborn.swarmplot(
data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
dodge=False, orient=None, color=None, palette=None,
size=5, edgecolor="gray", linewidth=0, hue_norm=None,
native_scale=False, formatter=None, legend="auto", warn_thresh=.05,
ax=None, **kwargs
)
参数swarmplot和stripplot参数上基本一致,少了jitter,因为它显示的是分布密度,不需要添加抖动项。
(1)普通绘图:
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.swarmplot(x="day",y="total_bill",data=data)
plt.show()
(2)增加几个参数试试:
import seaborn as sns
sns.set(style="darkgrid") #seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.swarmplot(x="day",y="total_bill", hue="smoker",data=data, palette="Set2", dodge=True)
plt.show()
Seaborn模块中的boxplot函数绘制箱线图,是一种用于展示一组数据分布情况的图表。箱线图的主要组成部分是箱体和须线。箱体表示数据的中间50%取值范围,也称为四分位数间距(IQR),即数据的下四分位数(Q1)和上四分位数(Q3)之间的区域。箱体中的中位数(median)用一条线表示。须线表示箱体之外的数据点,其中最长的线通常代表最大值和最小值,但也可以根据用户需要来定义。箱线图可以用于比较不同组之间的数据分布情况,也可以用于检测数据中的异常值。
seaborn.boxplot(
data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
orient=None, color=None, palette=None, saturation=.75, width=.8,
dodge=True, fliersize=5, linewidth=None, whis=1.5, ax=None,
**kwargs
)
常用参数说明:
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.boxplot(x="day", y="total_bill", data=data)
plt.show()
Seaborn 库中的 violinplot(小提琴图)是一种用于可视化数值数据分布的图形。它类似于箱线图,但是它还可以显示数据分布的密度。
小提琴图的主要组成部分是一个中央的箱形图,两侧是对称的密度曲线。这些密度曲线可以用来比较不同组之间的数据分布。小提琴图还可以用不同的颜色和样式来区分不同的类别或分组。
小提琴图可以用于比较多个变量之间的分布,也可以用于比较同一变量在不同类别或分组之间的分布。它可以帮助我们识别数据中的异常值、偏态分布和多峰分布等特征。
seaborn.violinplot(
data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
bw="scott", cut=2, scale="area", scale_hue=True, gridsize=100,
width=.8, inner="box", split=False, dodge=True, orient=None,
linewidth=None, color=None, palette=None, saturation=.75,
ax=None, **kwargs,
)
常用参数说明:
(1)普通绘图
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.violinplot(x="day", y="total_bill", data=data)
plt.show()
运行结果:
(2)通过inner='quartile'
参数绘制四分位线:
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.violinplot(x="day", y="total_bill", data=data,inner='quartile', hue="sex")
plt.show()
Seaborn 库中的 barplot(条形图)是一种用于可视化分类变量和数值变量之间关系的图形。它可以用于比较不同类别或分组之间的数值变量的大小、趋势和差异。
seaborn.barplot(
data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
estimator="mean", errorbar=("ci", 95), n_boot=1000, units=None, seed=None,
orient=None, color=None, palette=None, saturation=.75, width=.8,
errcolor=".26", errwidth=None, capsize=None, dodge=True, ci="deprecated",
ax=None,
**kwargs,
)
常用参数说明:
(1)统计平均数:
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
# 统计星期三到星期天的消费总额的平均数
sns.catplot(x="day",y="total_bill",data=data, kind="bar")
plt.show()
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('titanic', data_home="D:\seaborn-data-master")
# 统计男女中获救的比例
sns.catplot(data=data,kind="bar",x="sex",y="survived")
plt.show()
运行结果:
(3)自定义函数:设置estimator为中位数(numpy的统计函数都可以,只要你觉得有意义),设置误差棒的宽度,误差棒的颜色为“c”
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
# 自定义函数
ax = sns.barplot(x="day", y="total_bill",hue='sex', data=data, estimator=np.median,capsize=0.2,errcolor='c')
plt.show()
Seaborn 库中的 countplot(柱状图)是一种用于可视化分类变量之间关系的图形。它可以用于比较不同类别或分组之间的数量、频率和比例。
seaborn.countplot(
data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
orient=None, color=None, palette=None, saturation=.75, width=.8,
dodge=True, ax=None, **kwargs
)
常用参数说明:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('titanic', data_home="D:\seaborn-data-master")
sns.countplot(x="class", hue="who", data=data)
plt.show()
Pointplot是一种用于可视化分类变量和数值变量之间关系的图表类型。它显示了每个分类变量的平均值(或中位数等)和置信区间,通常使用点和线的组合来表示。
Pointplot的主要优点是可以同时显示多个分类变量之间的关系,以及用置信区间表示变量之间的显著性差异。另外,它还可以轻松地添加额外的分类变量或使用不同的调色板来显示数据。
需要注意的是,Pointplot适用于分类变量和数值变量之间的关系,但不适用于分类变量之间的关系。如果需要显示分类变量之间的关系,可以考虑使用其他类型的图表,例如条形图或热力图。
seaborn.pointplot(
data=None, *, x=None, y=None, hue=None, order=None, hue_order=None,
estimator="mean", errorbar=("ci", 95), n_boot=1000, units=None, seed=None,
markers="o", linestyles="-", dodge=False, join=True, scale=1,
orient=None, color=None, palette=None, errwidth=None, ci="deprecated",
capsize=None, label=None, ax=None,
)
常用参数说明:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('titanic', data_home="D:\seaborn-data-master")
sns.catplot(x="sex",y="survived",data=data,kind="point",hue="class")
plt.show()
seaborn.distplot(a=None, bins=None, hist=True, kde=True, rug=False, fit=None,
hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None,
color=None, vertical=False, norm_hist=False, axlabel=None,
label=None, ax=None, x=None)
常用参数说明:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('titanic', data_home="D:\seaborn-data-master")
# 去除Titanic数据集中年龄缺失的数据,得到一个新的数据集titanic
titanic = data[~np.isnan(data['age'])]
# 设置Seaborn绘图时使用默认颜色代码
sns.set(color_codes=True)
# 绘制titanic数据集中年龄的直方图
sns.distplot(titanic['age'])
plt.show()
核密度图(Kernel Density Estimation,简称KDE)是一种常用于描述数据分布的非参数方法,它可以通过在每个数据点周围的小区域内放置一个核函数,并将这些核函数的和除以样本数量来估计数据的概率密度函数。核密度图通常用于可视化连续变量的分布情况,它可以更加平滑地显示数据的分布情况,避免了直方图等离散化的缺点。
seaborn.kdeplot(
data=None, *, x=None, y=None, hue=None, weights=None,
palette=None, hue_order=None, hue_norm=None, color=None, fill=None,
multiple="layer", common_norm=True, common_grid=False, cumulative=False,
bw_method="scott", bw_adjust=1, warn_singular=True, log_scale=None,
levels=10, thresh=.05, gridsize=200, cut=3, clip=None,
legend=True, cbar=False, cbar_ax=None, cbar_kws=None, ax=None,
**kwargs,
)
常用参数说明:
(1)双线核密度图
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
# 生成随机数据
data1 = np.random.randn(1000)
data2 = np.random.randn(1000)
# 绘制核密度图
sns.kdeplot(data1, shade=True, color="r")
plt.show()
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
# 生成随机数据
x = np.random.randn(1000)
y = np.random.randn(1000)
# 绘制双变量核密度图
sns.kdeplot(x=x, y=y,shade=True,shade_lowest=False,cbar=True,color='b')
plt.show()
seaborn模块的jointplot函数可以用于绘制联合图,即同时显示两个变量之间的关系,包括散点图、直方图、核密度图等。jointplot函数的参数包括x、y、data、kind、color等,其中x和y分别表示要绘制的两个变量,data表示数据集,kind表示要绘制的图形类型,color表示颜色。jointplot函数可以绘制以下几种类型的联合图:
散点图(scatter):用于显示两个变量之间的关系,可以通过kind参数设置为"scatter"来绘制。
直方图(hist):用于显示每个变量的分布情况,可以通过kind参数设置为"hist"来绘制。
核密度图(kde):用于显示两个变量之间的关系和每个变量的分布情况,可以通过kind参数设置为"kde"来绘制。
六边形图(hex):用于显示两个变量之间的关系,但是比散点图更适用于大量数据点,可以通过kind参数设置为"hex"来绘制。
联合图可以帮助我们更好地理解两个变量之间的关系,特别是在探索数据时非常有用。
seaborn.jointplot(
data=None, *, x=None, y=None, hue=None, kind="scatter",
height=6, ratio=5, space=.2, dropna=False, xlim=None, ylim=None,
color=None, palette=None, hue_order=None, hue_norm=None, marginal_ticks=False,
joint_kws=None, marginal_kws=None,
**kwargs
)
常用参数说明:
(1)边缘直方图绘制散点图:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.jointplot(x="total_bill", y="tip", data=data)
plt.show()
(2)核密度图:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.jointplot(x="total_bill", y="tip", data=data,kind="kde")
plt.show()
运行结果:
Seaborn 模块中的 lmplot() 函数是一个用于绘制线性回归图的高级函数,它可以帮助我们快速地进行线性回归分析和可视化。
seaborn.lmplot(
data=None, *,
x=None, y=None, hue=None, col=None, row=None,
palette=None, col_wrap=None, height=5, aspect=1, markers="o",
sharex=None, sharey=None, hue_order=None, col_order=None, row_order=None,
legend=True, legend_out=None, x_estimator=None, x_bins=None,
x_ci="ci", scatter=True, fit_reg=True, ci=95, n_boot=1000,
units=None, seed=None, order=1, logistic=False, lowess=False,
robust=False, logx=False, x_partial=None, y_partial=None,
truncate=True, x_jitter=None, y_jitter=None, scatter_kws=None,
line_kws=None, facet_kws=None,
)
常用参数说明:
x 和 y:指定用于绘制图形的变量;
data:指定数据集;
hue:指定分类变量,用于按照不同类别对数据进行分组;
col 和 row:指定用于分组的列名,用于在多个子图中绘制不同的数据子集;
fit_reg:指定是否绘制回归线;
ci:指定置信区间的大小;
scatter_kws 和 line_kws:用于控制散点图和回归线的样式。
col_wrap:指定每行最多显示的子图数量,当col参数有多个取值时有效,可选参数。
palette:指定颜色调色盘,可以是Seaborn自带的调色盘名称,也可以是自定义的颜色序列,可选参数。
size:指定图像的大小,可以是标量或者元组,可选参数。
aspect:指定图像的纵横比,可选参数。
markers:指定散点图的标记样式,可以是标记名称或者元组,可选参数。
legend:指定是否显示图例,可选参数。
legend_out:指定图例是否在图像外部显示,可选参数。
scatter_kws:指定散点图的其他参数,如点的大小、颜色等,可选参数。
line_kws:指定回归线的其他参数,如线型、颜色等,可选参数。
order:指定回归线的阶数,可选参数。
robust:指定是否使用鲁棒回归,可选参数。
logistic:指定是否使用逻辑回归,可选参数。
lowess:指定是否使用低通滤波平滑数据,可选参数。
x_estimator:指定用于估计x轴数据的函数,可选参数。
x_bins:指定将x轴数据分成多少个区间,可选参数。
scatter:指定是否绘制散点图,可选参数。
fit_reg:指定是否绘制回归线,可选参数。
truncate:指定是否截断回归线,可选参数。
hue_order:指定hue参数的顺序,可选参数。
col_order:指定col参数的顺序,可选参数。
row_order:指定row参数的顺序,可选参数。
logistic:指定是否使用逻辑回归,可选参数。
logx:指定是否对x轴进行对数变换,可选参数。
logy:指定是否对y轴进行对数变换,可选参数。
truncate:指定是否截断回归线,可选参数。
dropna:指定是否删除缺失值,可选参数。
(1)普通绘图
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.lmplot(x="total_bill", y="tip", data=data)
plt.show()
(2)指定分类变量
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.lmplot(x="total_bill", y="tip", hue="smoker", data=data)
plt.show()
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
sns.lmplot(x="total_bill", y="tip", col="day", hue="day",data=data, col_wrap=2, height=4)
plt.show()
热力图是一种数据可视化技术,通过在二维平面上使用颜色来表示数据的密度分布,以便更直观地观察和分析数据。热力图通常用于显示地理信息、网站流量、销售数据等。在热力图中,颜色越深表示数据点分布越密集,颜色越浅则表示数据点分布越稀疏。
seaborn.heatmap(
data, *,
vmin=None, vmax=None, cmap=None, center=None, robust=False,
annot=None, fmt=".2g", annot_kws=None,
linewidths=0, linecolor="white",
cbar=True, cbar_kws=None, cbar_ax=None,
square=False, xticklabels="auto", yticklabels="auto",
mask=None, ax=None,
**kwargs
)
常用参数说明:
(1)普通绘图:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
# 创建数据集
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 绘制热力图
sns.heatmap(data)
plt.show()
(2)显示对应数字:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
# 创建数据集
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 绘制热力图
sns.heatmap(data, cmap="YlGnBu", annot=True, fmt=".1f", linewidths=.5)
plt.show()
聚类图(clustermap)是一种用于可视化聚类分析结果的图表,通常用于展示基因表达数据、蛋白质相互作用网络等复杂数据的聚类分析结果。聚类图将数据集中的样本或特征进行聚类分析,并将聚类分析的结果以热力图的形式展示出来,同时还包括样本聚类树和特征聚类树,方便观察和分析数据的聚类模式和相关性。
seaborn.clustermap(
data, *,
pivot_kws=None, method='average', metric='euclidean',
z_score=None, standard_scale=None, figsize=(10, 10),
cbar_kws=None, row_cluster=True, col_cluster=True,
row_linkage=None, col_linkage=None,
row_colors=None, col_colors=None, mask=None,
dendrogram_ratio=.2, colors_ratio=0.03,
cbar_pos=(.02, .8, .05, .18), tree_kws=None,
**kwargs
)
常用参数说明:
data:必需参数,指定要绘制的数据集。
pivot_kws:字典类型,用于传递给pivot函数的参数。
method:指定聚类的方法,可以是“single”、“complete”、“average”、“weighted”、“centroid”、“median”或“ward”。
metric:指定距离度量方法,可以是“euclidean”、“manhattan”、“chebyshev”、“minkowski”、“cityblock”、“correlation”、“hamming”、“jaccard”等。
cmap:指定颜色映射,可以是Matplotlib中的任何颜色映射。
linewidths:指定连线的宽度。
figsize:指定图像的大小。
row_cluster、col_cluster:指定是否对行或列进行聚类,默认为True。
row_colors、col_colors:指定行或列的颜色,可以是颜色名称、颜色列表或颜色映射。
dendrogram_ratio:指定聚类树的高度与热图的高度之比。
cbar_pos:指定颜色条的位置,可以是“right”、“left”、“top”、“bottom”。
cbar_kws:字典类型,用于传递给颜色条的参数。
xticklabels、yticklabels:指定行或列的标签。
annot:指定是否在热图上标注数据。
fmt:指定标注数据的格式。
annot_kws:字典类型,用于传递给标注的参数。
mask:指定哪些数据需要被遮盖。
vmin、vmax:指定颜色条的最小值和最大值。
这个示例中,我们使用了一个10x10的随机数据作为输入数据,使用“coolwarm”颜色映射、ward聚类方法、euclidean距离度量,并调整了图像大小、颜色条位置、标签、字体大小等参数,最终得到了一个随机数据的聚类图:
import seaborn as sns
import numpy as np
import pandas as pd
# 生成随机数据
np.random.seed(0)
data = pd.DataFrame(np.random.rand(10, 10), columns=list('abcdefghij'))
# 绘制聚类图
sns.clustermap(data, cmap='coolwarm', method='ward', metric='euclidean', figsize=(10, 10),
xticklabels=True, yticklabels=True, annot=True, fmt='.2f',
annot_kws={"size": 10}, dendrogram_ratio=0.1, cbar_pos=(0.05, 0.85, 0.05, 0.1),
linewidths=0.5, vmin=0, vmax=1)
plt.show()
Seaborn模块中的FacetGrid可以用于绘制多个子图,每个子图可以根据一个或多个分类变量进行分组。FacetGrid可以用于可视化数据的各个方面,例如探索变量之间的关系、比较不同组之间的差异、展示时间序列数据等。
def __init__(
self, data, *,
row=None, col=None, hue=None, col_wrap=None,
sharex=True, sharey=True, height=3, aspect=1, palette=None,
row_order=None, col_order=None, hue_order=None, hue_kws=None,
dropna=False, legend_out=True, despine=True,
margin_titles=False, xlim=None, ylim=None, subplot_kws=None,
gridspec_kws=None,
)
FacetGrid的主要参数包括:
在这个示例中,我们使用tips数据集,创建了一个FacetGrid对象,将子图按照性别和用餐时间进行分类,并根据吸烟行为变量进行着色。然后,我们使用map方法绘制散点图,将total_bill作为x轴变量,tip作为y轴变量。最后,我们使用set_titles方法添加子图标题,并使用plt.show()方法显示图像。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('tips', data_home="D:\seaborn-data-master")
# 创建FacetGrid对象
g = sns.FacetGrid(data, row="sex", col="time", hue="smoker", margin_titles=True)
# 绘制子图
g.map(sns.scatterplot, "total_bill", "tip")
# 添加标题
g.set_titles(row_template = '{row_name}', col_template = '{col_name}')
# 显示图像
plt.show()
PairGrid是Seaborn库中的一个工具,用于绘制成对关系的多个变量的图形。PairGrid的核心思想是将数据集拆分成多个子集,并在每个子集上绘制一个特定类型的图形。 PairGrid可以用于绘制散点图、直方图、密度图等。
PairGrid可以帮助我们探索多个变量之间的关系,帮助我们发现变量之间的相关性和模式。PairGrid也可以用于数据可视化和探索性数据分析。
def __init__(
self, data, *, hue=None, vars=None, x_vars=None, y_vars=None,
hue_order=None, palette=None, hue_kws=None, corner=False, diag_sharey=True,
height=2.5, aspect=1, layout_pad=.5, despine=True, dropna=False,
)
常用参数说明:
data:指定数据集。
vars:指定要用于绘图的变量列表。
hue:指定用于分组的变量。
palette:指定调色板。
height:指定图形高度。
aspect:指定图形宽高比。
despine:是否去掉边框。
diag_sharey:是否共享对角线的y轴刻度。
corner:是否在对角线上绘制变量名。
x_vars、y_vars:分别指定不同的x轴和y轴变量。
dropna:是否删除缺失值。
diag_kws、offdiag_kws:用于传递额外的参数给对角线和非对角线的绘图函数。
grid_kws:用于传递额外的参数给PairGrid对象的matplotlib子图对象。
以上是sns.PairGrid常用的参数说明,根据需要可以自定义调整参数来实现不同的可视化效果。
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
sns.set(style="darkgrid") # 设置seaborn默认风格
data = sns.load_dataset('iris', data_home="D:\seaborn-data-master")
g = sns.PairGrid(data)
g.map_upper(sns.scatterplot)
g.map_lower(sns.kdeplot)
g.map_diag(sns.histplot)
plt.show()
# 显示图像
plt.show()
本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html
码上行动:零基础学会Python编程(ChatGPT版)
本书从零开始,由浅入深地介绍了Python编程语言的基础知识,是面向零基础编程学习者的入门教程。全书共17章,其中第19章为基础篇,介绍了Python的语言基础,包括环境安装、输入/输出变量、常见数据类型、数学与逻辑运算、条件判断与循环语句、复合数据类型、函数、模块、文件操作;第1013章为进阶篇,介绍了与Python编程相关的拓展知识,包括Excel表格数据处理、使用正则表达式进行信息匹配、面向对象编程设计、多线程与多进程;第14~16章为实战篇,介绍了3个实战项目,分别是使用requests开发网络爬虫、使用tkinter开发GUI计算器、使用pygame开发飞机大战游戏;第17章为ChatGPT篇,主要介绍了初学者如何利用当下最热门的AI工具ChatGPT学习Python编程。
抽奖送书老规矩(不点赞收藏中奖无效):注意记得关注博主不然中奖了还不知道!!!
- 1. 点赞收藏文章
- 2. 评论区留言:人生苦短,我用Python!!!(留言才能进入奖池,每人最多留言三条)
- 3. 周六八点爬虫抽奖5人
- 如果不想抽奖京东自营购买链接:https://item.jd.com/13951968.html