pyecharts可视化图表-scatter:从入门到精通
目录
- 什么是散点图?
- 环境准备
- 基础散点图实现
- 代码详解
- 多维度数据散点图
- 代码详解
- 带颜色视觉映射的散点图
- 代码详解
- 带分割线的散点图
- 代码详解
- 带大小视觉映射的散点图
- 代码详解
散点图是数据可视化中非常强大的工具,能够直观展示变量间关系。本教程将带您从基础到高级,全面掌握pyecharts中散点图的使用技巧。pyecahts源码
什么是散点图?
散点图(Scatter Chart)是一种常用的可视化图表,用于展示两个变量之间的关系。它通过在坐标系中绘制数据点,来呈现变量间的相关性、分布规律或异常值。散点图特别适合以下场景:
- 分析变量间的相关性(正相关、负相关或无相关)
- 识别数据中的聚类或异常值
- 观察数据的分布模式
- 比较不同组数据的分布特征
在数据科学、机器学习、统计学和商业分析等领域,散点图都是一种基础且强大的可视化工具。
散点图(Scatter Chart)是一种常用的可视化图表,用于展示两个变量之间的关系。它通过在坐标系中绘制数据点,来呈现变量间的相关性、分布规律或异常值。散点图特别适合以下场景:
- 分析变量间的相关性(正相关、负相关或无相关)
- 识别数据中的聚类或异常值
- 观察数据的分布模式
环境准备
在开始之前,请确保你已经安装了pyecharts库。如果尚未安装,可以使用以下命令:
pip install pyecharts
安装完成后,我们就可以开始创建各种精美的散点图了。
在开始之前,请确保你已经安装了pyecharts库。如果尚未安装,可以使用以下命令:
pip install pyecharts
基础散点图实现
下面是一个基础散点图的实现代码,我们将逐步讲解其中的各个部分:
适用场景:展示两个数值变量之间的基本关系,适合初步探索数据相关性。
下面是一个基础散点图的实现代码,我们将逐步讲解其中的各个部分:
# 导入pyecharts的选项配置模块
import pyecharts.options as opts
# 导入散点图图表类型
from pyecharts.charts import Scatter"""
Gallery 使用 pyecharts 1.1.0
参考地址: `https://echarts.apache.org/examples/editor.html?c=scatter-simple` 目前无法实现的功能:1、暂无
"""# 准备数据,这里是一个二维数组,每个元素是一个[x, y]坐标对
data = [[10.0, 8.04],[8.0, 6.95],[13.0, 7.58],[9.0, 8.81],[11.0, 8.33],[14.0, 9.96],[6.0, 7.24],[4.0, 4.26],[12.0, 10.84],[7.0, 4.82],[5.0, 5.68],
]# 按照x轴数据进行排序,使图表展示更有条理
data.sort(key=lambda x: x[0])# 提取x轴和y轴数据
x_data = [d[0] for d in data]
y_data = [d[1] for d in data]# 创建散点图实例
(Scatter()# 添加x轴数据.add_xaxis(xaxis_data=x_data)# 添加y轴数据.add_yaxis(series_name="", # 系列名称,这里为空y_axis=y_data, # y轴数据symbol_size=20, # 散点的大小label_opts=opts.LabelOpts(is_show=False), # 不显示数据标签)# 设置系列选项(这里未做特殊设置).set_series_opts()# 设置全局选项.set_global_opts(# x轴选项xaxis_opts=opts.AxisOpts(type_="value", # 数值型坐标轴splitline_opts=opts.SplitLineOpts(is_show=True) # 显示分隔线),# y轴选项yaxis_opts=opts.AxisOpts(type_="value", # 数值型坐标轴axistick_opts=opts.AxisTickOpts(is_show=True), # 显示刻度splitline_opts=opts.SplitLineOpts(is_show=True), # 显示分隔线),# 提示框选项tooltip_opts=opts.TooltipOpts(is_show=False), # 不显示提示框)# 渲染到Notebook中显示.render_notebook()
)
代码详解
-
导入模块:我们导入了
pyecharts.options
用于配置图表选项,以及Scatter
用于创建散点图。 -
数据准备:我们创建了一个二维数组
data
,包含了11个数据点。每个数据点都是一个[x, y]坐标对。 -
数据排序:使用
sort
方法按照x轴的值对数据进行排序,这样可以使散点图的展示更加直观。 -
数据提取:将x轴和y轴的数据分别提取到
x_data
和y_data
列表中。 -
创建图表:使用链式调用创建散点图实例,并进行配置:
add_xaxis
:添加x轴数据add_yaxis
:添加y轴数据,设置散点大小和标签选项set_series_opts
:设置系列选项(这里未做特殊配置)set_global_opts
:设置全局选项,包括坐标轴和提示框的配置render_notebook
:在Jupyter Notebook中渲染图表
多维度数据散点图
在实际应用中,我们经常需要展示多维度的数据。下面是一个展示三维数据的散点图实现:
适用场景:当数据包含三个或更多维度时,可以使用多维度散点图同时展示多个变量间的关系。
在实际应用中,我们经常需要展示多维度的数据。下面是一个展示三维数据的散点图实现:
# 导入必要的模块
from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.commons.utils import JsCode
from pyecharts.faker import Faker # 创建散点图实例
c = (Scatter() .add_xaxis(Faker.choose()) # 使用Faker库生成x轴数据.add_yaxis("商家A",# 生成二维数据,每个数据点包含[x, y, value]三个维度[list(z) for z in zip(Faker.values(), Faker.choose())],# 自定义标签格式化器label_opts=opts.LabelOpts(formatter=JsCode("function(params){return params.value[1] +' : '+ params.value[2];}")),)# 设置全局选项.set_global_opts(title_opts=opts.TitleOpts(title="Scatter-多维度数据"), # 设置标题# 自定义提示框格式化器tooltip_opts=opts.TooltipOpts(formatter=JsCode("function (params) {return params.name + ' : ' + params.value[2];}")),# 设置视觉映射配置visualmap_opts=opts.VisualMapOpts(type_="color", max_=150, min_=20, dimension=1 # 基于第二个维度的值映射颜色),)
)
# 在Notebook中渲染图表
c.render_notebook()
代码详解
-
导入模块:除了基本的
options
和Scatter
外,我们还导入了JsCode
用于编写JavaScript代码,以及Faker
用于生成模拟数据。 -
数据准备:使用
Faker.choose()
和Faker.values()
生成模拟数据,并将其组合成三维数据点。 -
添加数据系列:
add_xaxis
:添加x轴数据add_yaxis
:添加y轴数据,这里每个数据点包含三个维度的信息label_opts
:使用JavaScript函数自定义标签显示格式
-
全局配置:
title_opts
:设置图表标题tooltip_opts
:使用JavaScript函数自定义提示框显示格式visualmap_opts
:设置视觉映射,根据第二个维度的值映射散点颜色
带颜色视觉映射的散点图
视觉映射是一种强大的功能,可以根据数据的值来映射散点的颜色或大小,使图表更加直观。下面是一个带颜色视觉映射的散点图实现:
适用场景:当需要突出显示数据值的大小差异时,颜色视觉映射可以帮助快速识别数据分布特征。
视觉映射是一种强大的功能,可以根据数据的值来映射散点的颜色或大小,使图表更加直观。下面是一个带颜色视觉映射的散点图实现:
# 导入必要的模块
from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker # 创建散点图实例
c = (Scatter() .add_xaxis(Faker.choose()) # 使用Faker库生成x轴数据.add_yaxis("商家A", Faker.values()) # 添加y轴数据# 设置全局选项.set_global_opts( title_opts=opts.TitleOpts(title="Scatter-VisualMap(Color)"), # 设置标题visualmap_opts=opts.VisualMapOpts(max_=150), # 设置视觉映射,最大值为150)
)
# 在Notebook中渲染图表
c.render_notebook()
代码详解
-
导入模块:导入了
options
、Scatter
和Faker
模块。 -
数据准备:使用
Faker.choose()
生成x轴数据,Faker.values()
生成y轴数据。 -
添加数据系列:
add_xaxis
:添加x轴数据add_yaxis
:添加y轴数据,设置系列名称为"商家A"
-
全局配置:
title_opts
:设置图表标题为"Scatter-VisualMap(Color)"visualmap_opts
:设置视觉映射,这里使用默认的颜色映射,并设置最大值为150
通过视觉映射,散点的颜色会根据y轴值的大小自动变化,值越大,颜色越深,使数据的分布更加直观。
带分割线的散点图
在散点图中添加分割线可以帮助我们更好地定位数据点的位置。下面是一个显示分割线的散点图实现:
适用场景:当数据点分布较广或需要精确读取数据点坐标时,分割线可以提高图表的可读性。
在散点图中添加分割线可以帮助我们更好地定位数据点的位置。下面是一个显示分割线的散点图实现:
# 导入必要的模块
from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker # 创建散点图实例
c = (Scatter() .add_xaxis(Faker.choose()) # 使用Faker库生成x轴数据.add_yaxis("商家A", Faker.values()) # 添加y轴数据# 设置全局选项.set_global_opts( title_opts=opts.TitleOpts(title="Scatter-显示分割线"), # 设置标题xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)), # 显示x轴分割线yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)), # 显示y轴分割线)
)
# 在Notebook中渲染图表
c.render_notebook()
代码详解
-
导入模块:导入了
options
、Scatter
和Faker
模块。 -
数据准备:使用
Faker.choose()
生成x轴数据,Faker.values()
生成y轴数据。 -
添加数据系列:
add_xaxis
:添加x轴数据add_yaxis
:添加y轴数据,设置系列名称为"商家A"
-
全局配置:
title_opts
:设置图表标题为"Scatter-显示分割线"xaxis_opts
:设置x轴选项,通过splitline_opts
启用分割线yaxis_opts
:设置y轴选项,通过splitline_opts
启用分割线
分割线的添加使得我们可以更清晰地看到每个数据点在坐标系中的具体位置,特别是当数据点分布较广时,分割线可以帮助我们更好地理解数据的分布情况。
带大小视觉映射的散点图
视觉映射不仅可以应用于颜色,还可以应用于点的大小。通过点的大小变化,我们可以直观地展示第三个维度的数据。下面是一个带视觉映射大小的散点图实现:
适用场景:需要展示数据点的重要性或强度差异时,大小视觉映射可以提供直观的比较。
视觉映射不仅可以应用于颜色,还可以应用于点的大小。通过点的大小变化,我们可以直观地展示第三个维度的数据。下面是一个带视觉映射大小的散点图实现:
# 导入必要的模块
from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker # 创建散点图实例
c = (Scatter() .add_xaxis(Faker.choose()) # 使用Faker库生成x轴数据.add_yaxis("商家A", Faker.values()) # 添加商家A的y轴数据.add_yaxis("商家B", Faker.values()) # 添加商家B的y轴数据# 设置全局选项.set_global_opts(title_opts=opts.TitleOpts(title="Scatter-VisualMap(Size)"), # 设置标题visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20), # 设置视觉映射为大小)
)
# 在Notebook中渲染图表
c.render_notebook()
代码详解
-
导入模块:导入了
options
、Scatter
和Faker
模块。 -
数据准备:使用
Faker.choose()
生成x轴数据,Faker.values()
生成y轴数据。 -
添加数据系列:
add_xaxis
:添加x轴数据add_yaxis
:添加两组y轴数据,分别对应"商家A"和"商家B"
-
全局配置:
title_opts
:设置图表标题为"Scatter-VisualMap(Size)"visualmap_opts
:设置视觉映射为大小类型(type_="size"
),最大值为150,最小值为20
通过视觉映射大小,我们可以根据数据值的大小来调整散点的大小,从而在二维平面上展示三维数据。这种方式特别适合展示数据的分布密度和数值大小关系。