经过前三篇的铺垫,今天终于进入Seaborn实战环节啦!
散点图是日常可视化中使用频率最高的图表之一,核心作用是展示两个数值型变量之间的关系(比如“账单金额与小费金额的相关性”“身高与体重的关系”)。
用Seaborn绘制散点图,代码极简,还能一键分组、自定义样式,比Matplotlib更强大、更好看,新手直接复制就能运行👇
Seaborn绘制散点图的核心函数是sns.scatterplot(),参数简单易懂,我们分“基础版”和“进阶版”讲解,循序渐进,新手也能跟上。
用小费数据集,展示“账单金额”与“小费金额”的关系,最基础的散点图,3行核心代码搞定:
import seaborn as snsimport matplotlib.pyplot as plt# 自定义主题:解决中文乱码+设置字体、线条、配色sns.set(style="whitegrid", # 基础主题font_scale=1.2, # 字体缩放比例(1.2倍更清晰)palette="Set2", # 全局配色方案rc={"font.sans-serif": ["SimHei"], # 解决中文乱码(必加)"axes.facecolor": "#F5F5F5", # 图表背景色(浅灰色,更柔和)"lines.linewidth": 2 # 线条宽度(更醒目)})# 1. 加载数据tips = sns.load_dataset("tips")# 2. 绘制基础散点图:x轴=账单金额,y轴=小费金额sns.scatterplot(x="total_bill", y="tip", data=tips)# 3. 自定义标题和坐标轴标签(提升可读性)plt.title("账单金额与小费金额关系散点图")plt.xlabel("账单金额(元)")plt.ylabel("小费金额(元)")# 显示图表plt.show()

很多时候,我们需要对比不同类别的数据关系(比如“不同性别、不同用餐时间的小费差异”),通过hue(颜色)、style(形状)参数,就能轻松实现分组展示:
import seaborn as snsimport matplotlib.pyplot as plt# 自定义主题:解决中文乱码+设置字体、线条、配色sns.set(style="whitegrid", # 基础主题font_scale=1.2, # 字体缩放比例(1.2倍更清晰)palette="Set2", # 全局配色方案rc={"font.sans-serif": ["SimHei"], # 解决中文乱码(必加)"axes.facecolor": "#F5F5F5", # 图表背景色(浅灰色,更柔和)"lines.linewidth": 2 # 线条宽度(更醒目)})tips = sns.load_dataset("tips")# 1. 按性别分组(hue=性别),不同性别用不同颜色sns.scatterplot(x="total_bill", y="tip", hue="sex", data=tips)plt.title("按性别分组:账单金额与小费金额关系")plt.show()# 2. 按性别(颜色)+ 用餐时间(形状)双重分组sns.scatterplot(x="total_bill", y="tip", hue="sex", style="time", data=tips)plt.title("按性别+用餐时间分组:账单金额与小费金额关系")plt.show()# 3. 按人数分组,用散点大小表示人数(人数越多,散点越大)sns.scatterplot(x="total_bill", y="tip", size="size", data=tips)plt.title("按人数分组:账单金额与小费金额关系")plt.show()



数据量过大时,散点会重叠?用alpha参数设置透明度(0-1之间),比如alpha=0.6,重叠部分会更清晰;
分组颜色不好看?用palette参数自定义配色,比如palette="Set2",Seaborn内置多种配色方案;
散点太小/太大?用s参数设置散点大小,比如s=80,数值越大,散点越大。
结合前面的主题设置,自定义散点图的颜色、边框、透明度,打造专属高颜值散点图:
import seaborn as snsimport matplotlib.pyplot as plttips = sns.load_dataset("tips")sns.set_style("whitegrid")# 自定义散点图:颜色+边框+透明度+大小sns.scatterplot(x="total_bill", y="tip", data=tips,color="#FF6B6B", # 散点颜色(红色)edgecolor="black", # 散点边框颜色(黑色)alpha=0.7, # 透明度(0.7,避免重叠)s=100, # 散点大小hue="sex", # 按性别分组palette="Set1" # 分组配色)
本篇我们掌握了Seaborn散点图的基础绘制、分组展示和样式自定义,能轻松应对日常“展示变量关系”的可视化需求~
下篇我们将讲解另一种高频图表——线图,教你展示数据的变化趋势(比如“月份与航班数量的变化”),适合时间序列分析,记得关注!
往期回顾:
Python学习笔记——从入门到报废(十九、第三方库(下))
Python学习笔记——从入门到报废(十八、第三方库(上))
(文章使用AI进行润色和排版)