Seaborn scatterplot():创建散点图(附带实例)
散点图主要用于展示数据的分布情况,在 Seaborn 中可以使用 scatterplot() 函数创建散点图。
分析下面的代码:

图 1 散点图
下面的代码将散点图中各个点的形状更改为菱形:

图 2 更改点的形状
下面的代码将散点图中各个点的形状设置为菱形,各个点的大小为 100 个像素:

图 3 设置点的大小
Seaborn 中的很多绘图函数都包含这 3 个参数中的一个或多个。
下面的代码根据产品等级(由 grade 变量提供)自动调整各个点的大小:

图 4 以点的大小反映产品的不同等级
下面的代码同时使用 hue、size 和 style 三个参数,通过点的颜色、大小和形状来反映产品的不同等级:

图 5 同时使用hue、size和style三个参数
创建基本散点图
使用 scatterplot() 函数创建散点图时,需要指定的几个主要参数仍然是 data、x 和 y,它们的含义与前面介绍过的 barplot() 和 lineplot() 函数的同名参数相同,Seaborn 中的大多数绘图函数都包含这几个参数。分析下面的代码:
import matplotlib.pyplot as plt import seaborn as sns sns.set_style({'font.sans-serif': 'SimSun'}) month = range(1, 10) counts = [20, 30, 70, 50, 90, 60, 40, 10, 80] title = ['月份', '数量'] data = dict(zip(title, [month, counts])) sns.scatterplot(data, x=title[0], y=title[1]) plt.show()程序将创建如下图所示的散点图:

图 1 散点图
更改点的形状和大小
为 scatterplot() 函数指定 marker 和 s 两个参数,可以更改点的形状和大小。下面的代码将散点图中各个点的形状更改为菱形:
import matplotlib.pyplot as plt import seaborn as sns sns.set_style({'font.sans-serif': 'SimSun'}) month = range(1, 10) counts = [20, 30, 70, 50, 90, 60, 40, 10, 80] title = ['月份', '数量'] data = dict(zip(title, [month, counts])) sns.scatterplot(data, x=title[0], y=title[1], marker='D') plt.show()效果如下图所示:

图 2 更改点的形状
下面的代码将散点图中各个点的形状设置为菱形,各个点的大小为 100 个像素:
import matplotlib.pyplot as plt import seaborn as sns sns.set_style({'font.sans-serif': 'SimSun'}) month = range(1, 10) counts = [20, 30, 70, 50, 90, 60, 40, 10, 80] title = ['月份', '数量'] data = dict(zip(title, [month, counts])) sns.scatterplot(data, x=title[0], y=title[1], marker='D', s=100) plt.show()效果如下图所示:

图 3 设置点的大小
在散点图中添加特征标记
如需根据某一组数据对散点图中的各个点从外观上进行区分,可以为 scatterplot() 函数指定 hue、size 和 style 三个参数之一或全部:- hue 参数按照颜色区分各个点;
- size 参数按照大小区分各个点;
- style 参数按照形状区分各个点。
Seaborn 中的很多绘图函数都包含这 3 个参数中的一个或多个。
下面的代码根据产品等级(由 grade 变量提供)自动调整各个点的大小:
import matplotlib.pyplot as plt import seaborn as sns sns.set_style({'font.sans-serif': 'SimSun'}) month = range(1, 10) counts = [20, 30, 70, 50, 90, 60, 40, 10, 80] grade = list('ABCABBCCC') title = ['月份', '数量', '等级'] data = dict(zip(title, [month, counts, grade])) sns.scatterplot(data, x=title[0], y=title[1], size=title[2]) plt.show()效果如下图所示:

图 4 以点的大小反映产品的不同等级
下面的代码同时使用 hue、size 和 style 三个参数,通过点的颜色、大小和形状来反映产品的不同等级:
import matplotlib.pyplot as plt import seaborn as sns sns.set_style({'font.sans-serif': 'SimSun'}) month = range(1, 10) counts = [20, 30, 70, 50, 90, 60, 40, 10, 80] grade = list('ABCABBCCC') title = ['月份', '数量', '等级'] data = dict(zip(title, [month, counts, grade])) sns.scatterplot( data, x=title[0], y=title[1], hue=title[2], size=title[2], style=title[2] ) plt.show()效果如下图所示:

图 5 同时使用hue、size和style三个参数