任务 6 绘制散点图
任务目的
这一步会介绍散点图的概念,散点图的绘制流程以及相关参数。同时会通过一个房屋面积与房屋售价的示例来展示散点图的具体绘制流程。
任务步骤
1.散点图介绍
(1)散点图概述
散点图是指在回归分析中,数据点在直角坐标系平面上的分布图。散点图在直角坐标系显示数据的两个变量(X和Y轴)之间的关系,数据显示为点的集合,适合用于在不考虑时间的情况下比较大量的数据点。散点图通常用来识别两个变量之间的相关性或用来观察它们的关系,从而发现某种趋势。
(2)散点图的绘制流程
散点图的绘制方法是matplotlib.pyplot.scatter(),需要同时传递x轴和y轴参数。下面是一个散点图的绘制示例(需要先执行准备实验环境的操作),此例中使用了与前面绘制折线图、柱状图相同的数据:
plt.scatter([1, 2, 3, 4], [1, 4, 9, 16])其中,列表[1, 2, 3, 4]对应x轴的数据,列表[1, 4, 9, 16]对应y轴的值,两个列表中的数据个数需要保持一致。
执行代码后。会生成一个简单的散点图:
不同于上面介绍的其他几种图表,为了让散点图呈现出较好的效果,需要为散点图提供尽可能多的数据点。
比如下面的示例来自对Matplotlib官方示例的简化,示例代码如下:
import numpy as np # 导入实验所需数学运算扩展库numpy
# 1.准备数据
data = {'a': np.arange(50)}
data['b'] = data['a'] + 10 * np.random.randn(50)
# 2.绘制图表
plt.scatter('a', 'b', data=data)
plt.xlabel('entry a')
plt.ylabel('entry b')运行代码,可以得到类似下方的散点图,此散点图中的数据具有明确的正相关性:
可以看到在准备足够多的数据后,散点图展示出了更好的相关性呈现效果。
注:官方示例中的散点包含大小和颜色信息,增加了图像中展示的信息维度。本例中为了简化实验效果,突出散点数量对散点图的影响,移除了散点大小和散点颜色的相关信息。
接下来将通过房屋面积与售价关系的散点图,展示散点图的具体应用。
2.示例——使用散点图统计房屋面积与售价的关系
下面的代码以散点图的形式展示了深圳市福田区二手房房屋面积与对应房屋价格的关系(数据来源于链家网),复制这些代码到单元格中:
# 1.配置实验环境
%matplotlib inline
import matplotlib.pyplot as plt # 导入pyplot模块
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False # 解决正负号乱码问题
# 2.准备实验数据,x对应房屋面积,y对应房屋价格
x = [52.71, 60.77, 83.35, 77.49, 32.9, 76.18, 63.48, 77.41, 86.75, 80.69, 91.23, 81.16, 85.13, 65.85, 37.11, 77.83, 62.12, 41.28, 66.9, 86.95, 75.1, 43.08, 59.1, 97.66, 50.06, 107.09, 65.49, 98.2, 88.97, 111.42, 86.95, 73, 108.51, 28.79, 53.79, 89.64, 107.6, 75.66, 97.03, 90.91, 84.65, 32.06, 35.56, 89.19, 23.06, 50, 39.5, 50.96, 44.81, 76.9]
y = [358, 420, 588, 588, 295, 499, 815, 535, 698, 660, 595, 530, 605, 465, 285, 575, 480, 276, 451, 585, 661, 250, 405, 575, 700, 758, 470, 618, 830, 850, 575, 478, 830, 290, 660, 670, 880, 620, 735, 630, 618, 375, 240, 660, 160, 350, 368, 350, 380, 490]
# 3.创建画布
plt.figure(figsize=(12, 6), dpi=150)
# 4.绘制图像
plt.scatter(x, y)
# 5.修饰图像
plt.title("深圳市福田区二手房面积与售价关系图", fontsize=16) # 添加标题
plt.xlabel("房屋面积(单位:平方米)") # 添加x轴标签
plt.ylabel("房屋售价(单位:万)") # 添加y轴标签
plt.grid(linestyle="--", alpha=0.2) # 添加网格
plt.xticks(range(20, 120, 5)) # 重设x轴刻度按下【Shift+Enter】运行单元格,将会展示统计结果的散点图:
此例中绘制散点图相关的配置信息,在前面绘制其他几种图表时基本都已经使用过了,这里不再详细介绍。唯一需要说明的是此例中通过方法plt.xticks()重设了x轴的刻度:
plt.xticks(range(20, 120, 5)) # 重设x轴刻度通过此设置可以将x轴的刻度范围设置为20~120,刻度间隔为5。如果不进行刻度的设置,Matplotlib会结合用户提供的数据自动生成刻度,本例中自动生成的刻度间隔是20,默认展示效果如下:
相比之下,较小的刻度间隔辅以网格线,可以帮助用户更好的定位散点图中每个点的位置,可以更精准的获取图中散点的信息。
学员评价