导读:什么是散点图?可以用来呈现哪些数据关系?在数据分析过程中可以解决哪些问题?怎样用Python绘制散点图?本文逐一为你解答。
作者:屈希峰
来源:大数据DT(ID:bigdatadt)
01 概述
散点图(Scatter)又称散点分布图,是以一个变量为横坐标,另一个变量为纵坐标,利用散点(坐标点)的分布形态反映变量统计关系的一种图形。
特点是能直观表现出影响因素和预测对象之间的总体关系趋势。优点是能通过直观醒目的图形方式反映变量间关系的变化形态,以便决定用何种数学表达方式来模拟变量之间的关系。散点图不仅可传递变量间关系类型的信息,还能反映变量间关系的明确程度。
通过观察散点图数据点的分布情况,我们可以推断出变量间的相关性。如果变量之间不存在相互关系,那么在散点图上就会表现为随机分布的离散的点,如果存在某种相关性,那么大部分的数据点就会相对密集并以某种趋势呈现。
数据的相关关系大体上可以分为:正相关(两个变量值同时增长)、负相关(一个变量值增加,另一个变量值下降)、不相关、线性相关、指数相关等,表现在散点图上的大致分布如图1所示。那些离点集群较远的点我们称之为离群点或者异常点。
▲图1 散点数据的相关性
在Python体系中,可使用Scipy、Statsmodels或Sklearn等对离散点进行回归分析,归纳现有数据并进行预测分析。对于那些变量之间存在密切关系,但是这些关系又不像数学公式和物理公式那样能够精确表达的,散点图是一种很好的图形工具,可以进行直观展示,如图2所示。
▲图2 散点数据拟合(线性)
但是在分析过程中需要注意,变量之间的相关性并不等同于确定的因果关系,仍需要考虑其他影响因素。
02 实例
散点图代码示例如下所示。
代码示例①
# 数据
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]
# 画布:尺寸
p = figure(plot_width=400, plot_height=400)
# 画图
p.scatter(x, y,
size=20, # screen units 显示器像素单位
# radius=1, # data-space units 坐标轴单位
marker="circle", color="navy", alpha=0.5)
# p.circle(x, y, size=20, color="navy", alpha=0.5)
# 显示
show(p)
运行结果如图3所示。
▲图3 代码示例①运行结果
代码示例①中第7行使用scatter方法进行散点图绘制;第11行采用circle方法进行散点图绘制(推荐)。关于这两个方法的参数说明如下。
p.circle(x, y, **kwargs)参数说明。
-
x (str or seq[float]) : 离散点的x坐标,列名或列表
-
y (str or seq[float]) : 离散点的y坐标
-
size (str or list[float]) : 离散点的大小,屏幕像素单位
-
marker (str, or list[str]) : 离散点标记类型名称或名称列表
-
color (color value, optional) : 填充及轮廓线的颜色
-
source (`~bokeh.models.sources.ColumnDataSource`) : Bokeh专属数据格式
-
**kwargs: 其他自定义属性;其中标记点类型marker默认值为:“marker="circle"”,可以用“radius”定义圆的半径大小(单位为坐标轴单位)。这在Web数据化中非常有用,不同的方式,在不同的设备上的展示效果会有些许差异。
p.scatter(x, y, **kwargs)参数说明。
-
x (:class:`~bokeh.core.properties.NumberSpec` ) : x坐标
-
y (:class:`~bokeh.core.properties.NumberSpec` ) : y坐标
-
angle (:class:`~bokeh.core.properties.AngleSpec` ) : 旋转角度
-
angle_units (:class:`~bokeh.core.en