散点图的核心作用是展示两个变量之间的关联关系(比如身高与体重、学习时间与成绩、广告投入与销售额等),通过点的分布位置,能快速判断数据是正相关、负相关还是无相关。借助matplotlib库,新手也能轻松用 Python 画出直观的散点图。
一、准备工作:安装并导入库
和柱状图、折线图一致,核心依赖matplotlib库,若未安装,打开终端 / 命令提示符输入:
pip install matplotlib
安装完成后,在代码中导入库(惯例简写为plt):
import matplotlib.pyplot as plt
二、最基础的散点图:3 行核心代码
我们以 “学生学习时间与考试成绩的关联” 为例,手把手实现第一个散点图。
步骤 1:准备数据
定义两个列表,对应 “自变量”(x 轴,比如学习时间)和 “因变量”(y 轴,比如考试成绩):
# 自变量(x轴):每天学习时间(单位:小时)
study_time = [1, 2, 3, 3.5, 4, 5, 5.5, 6, 7, 8]
# 因变量(y轴):对应考试成绩(单位:分)
scores = [65, 68, 75, 78, 82, 88, 90, 92, 95, 96]
步骤 2:绘制散点图
用plt.scatter()函数绘制,核心参数是x轴数据和y轴数据:
# 绘制散点图(核心代码)
plt.scatter(study_time, scores)
步骤 3:显示图表
用plt.show()展示绘制结果:
# 显示图表
plt.show()
完整代码(直接运行可用)
import matplotlib.pyplot as plt
# 1. 准备数据
study_time = [1, 2, 3, 3.5, 4, 5, 5.5, 6, 7, 8] # x轴:学习时间(小时)
scores = [65, 68, 75, 78, 82, 88, 90, 92, 95, 96] # y轴:考试成绩(分)
# 2. 绘制散点图
plt.scatter(study_time, scores)
# 3. 显示图表
plt.show()
三、简单优化:让关联更易读
基础散点图可以添加 “点的样式”“标题”“坐标轴说明” 和 “网格线”,让图表更专业,补充 4 行代码即可:
import matplotlib.pyplot as plt
study_time = [1, 2, 3, 3.5, 4, 5, 5.5, 6, 7, 8]
scores = [65, 68, 75, 78, 82, 88, 90, 92, 95, 96]
# 绘制散点图:蓝色圆形点、点的大小为80、边缘黑色(更醒目)
plt.scatter(study_time, scores, color='blue', marker='o', s=80, edgecolors='black')
plt.title("学生学习时间与考试成绩关联图") # 图表标题
plt.xlabel("每天学习时间(单位:小时)") # x轴标签
plt.ylabel("考试成绩(单位:分)") # y轴标签
plt.grid(True, alpha=0.3) # 添加网格线,alpha控制透明度(0.3=浅灰色)
plt.show()
四、关键函数说明(新手必记)
| 函数 | 作用 | 常用参数 |
|---|---|---|
plt.scatter(x, y) | 绘制散点图(核心) | x = 自变量数据,y = 因变量数据;color = 点的颜色;marker = 点的样式(o = 圆形、s = 方块、^= 三角形);s = 点的大小;edgecolors = 点的边缘颜色 |
plt.title() | 设置图表标题 | 字符串(如 "学习时间与成绩关联") |
plt.xlabel() | 设置 x 轴标签 | 字符串(如 "学习时间(小时)") |
plt.ylabel() | 设置 y 轴标签 | 字符串(如 "成绩(分)") |
plt.grid() | 添加网格线(可选) | True = 显示,alpha = 透明度(0-1 之间) |
plt.show() | 显示图表 | 无 |
五、常见应用场景
散点图的核心是 “探索关联”,适合这些场景:
- 变量关系分析:身高与体重、温度与冰淇淋销量、广告投入与销售额
- 异常值检测:大部分点集中在某区域,个别远离的点可能是异常数据(比如某学生学习 8 小时但成绩仅 50 分)
- 数据分布观察:点的密集程度反映数据集中情况(比如中等学习时间的学生数量最多)
- 多组数据对比:用不同颜色 / 样式的点,在同一图中展示多组变量关系(比如男生 vs 女生的学习时间与成绩)