在数据可视化中,散点图是一种强大的工具,可用于展示数据点在二维平面上的分布情况。通过添加各种视觉组件,我们可以让散点图变得更加丰富和具有表现力,更能反映数据的多维度特征。本文将详细解读如何为散点图添加不同的视觉组件,包括根据数据大小映射图形大小、同时映射图形大小和颜色,以及综合运用大小、颜色和透明度等多维度的视觉组件。
一、散点图添加视觉组件(大小)
以下是 scatter_with_visualmap_size()
函数的代码,它展示了如何为散点图添加根据数据大小映射图形大小的视觉组件:
python
from pyecharts.charts import *
from pyecharts import options as opts
from pyecharts.faker import Faker
def scatter_with_visualmap_size():
scatter = Scatter(init_opts=opts.InitOpts(theme='light',
width='1000px',
height='600px'))
scatter.add_xaxis(Faker.choose())
scatter.add_yaxis('', Faker.values())
# 设置视觉组件
scatter.set_global_opts(visualmap_opts=opts.VisualMapOpts(type_='size'))
return scatter
chart = scatter_with_visualmap_size()
chart.render_notebook()
代码解释:
- 首先,我们导入了所需的模块,包括
Scatter
类、options
模块和Faker
模块。 - 创建
Scatter
实例scatter
,并使用init_opts
设置主题、宽度和高度,使图表更具美感和合适的尺寸。 - 使用
Faker.choose()
为x
轴生成一些假数据,Faker.values()
为y
轴生成一些数据。 - 在
set_global_opts
方法中,通过visualmap_opts
启用视觉映射,将type_
设置为size
。这意味着散点的大小将根据数据的大小进行映射,不过这里的数据大小是根据y
轴的数据默认进行映射,因为没有明确指定dimension
参数。
通过这个简单的设置,我们可以直观地看到散点的大小反映了数据的某种特征,从而让用户能快速分辨不同数据点在大小维度上的差异。
二、散点图添加视觉组件(大小与颜色)
scatter_with_visualmap_color_size()
函数展示了如何同时根据数据大小和另一维度映射图形大小与颜色:
python
from pyecharts.charts import *
from pyecharts import options as opts
import random
x_data = [random.randint(0, 100) for _ in range(30)]
y_data = [(random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)) for _ in range(30)]
def scatter_with_visualmap_color_size():
scatter = Scatter(init_opts=opts.InitOpts(theme='light',
width='1000px',
height='600px'))
scatter.add_xaxis(x_data)
scatter.add_yaxis('', y_data)
# 多个映射维度通过 list 形式传入
# dimension 指定数据维度
scatter.set_global_opts(visualmap_opts=[opts.VisualMapOpts(is_show=True, type_='size', dimension=2, pos_top='20%'),
opts.VisualMapOpts(is_show=True, type_='color', dimension=3, pos_top='60%')
],
xaxis_opts=opts.AxisOpts(type_="value"))
return scatter
chart = scatter_with_visualmap_color_size()
chart.render_notebook()
代码解释:
- 导入所需模块,并使用
random
模块生成随机数据。 - 创建
Scatter
实例,设置初始化选项。 - 为
x
轴添加x_data
,为y
轴添加y_data
。这里y_data
中的元素是元组,包含多个维度的数据。 - 在
set_global_opts
中,使用visualmap_opts
列表添加两个视觉映射组件:- 第一个
opts.VisualMapOpts
中,type_='size'
且dimension=2
,表示根据y_data
元组中第二个元素的大小来映射散点的大小,pos_top='20%'
控制该视觉映射组件在图表中的垂直位置。 - 第二个
opts.VisualMapOpts
中,type_='color'
且dimension=3
,表示根据y_data
元组中第三个元素的大小来映射散点的颜色,pos_top='60%'
控制该视觉映射组件在图表中的位置。
- 第一个
通过这种方式,我们可以同时观察到散点的大小和颜色随着数据的不同维度发生变化,从两个维度为用户提供更多的数据信息。
三、散点图添加视觉组件(大小、颜色与透明度)
scatter_with_visualmap_color_size_opacity()
函数则展示了散点图多维度视觉组件的综合应用:
python
from pyecharts.charts import *
from pyecharts import options as opts
import random
x_data = [random.randint(0, 100) for _ in range(30)]
y_data = [(random.randint(0, 100), random.randint(0, 100), random.randint(0, 100), random.randint(0, 100))
for _ in range(30)]
def scatter_with_visualmap_color_size_opacity():
scatter = Scatter(init_opts=opts.InitOpts(theme='light',
width='1000px',
height='600px'))
scatter.add_xaxis(x_data)
scatter.add_yaxis('', y_data)
# 多个映射维度通过 list 形式传入
# dimension 制定数据维度
scatter.set_global_opts(visualmap_opts=[opts.VisualMapOpts(is_show=True, type_='size', dimension=2, pos_top='10%'),
opts.VisualMapOpts(is_show=True, type_='color', dimension=3, pos_top='40%'),
opts.VisualMapOpts(is_show=True, type_='opacity', dimension=4,
# VisualMapOpt 中对于 range_opacity 没给默认值,需要自行设定
range_opacity=[0.2, 1], pos_top='70%')],
xaxis_opts=opts.AxisOpts(type_="value"))
return scatter
chart = scatter_with_visualmap_color_size_opacity()
chart.render_notebook()
代码解释:
- 同样导入所需模块并生成随机数据。
- 创建
Scatter
实例并设置初始化选项。 - 在
set_global_opts
中使用visualmap_opts
列表添加三个视觉映射组件:- 第一个
opts.VisualMapOpts
用于根据y_data
元组中第二个元素的大小映射散点的大小。 - 第二个
opts.VisualMapOpts
用于根据y_data
元组中第三个元素的大小映射散点的颜色。 - 第三个
opts.VisualMapOpts
用于根据y_data
元组中第四个元素的大小映射散点的透明度,这里使用range_opacity=[0.2, 1]
来指定透明度的范围,因为range_opacity
在VisualMapOpts
中没有默认值,需要手动设置。
- 第一个
这个函数通过添加三个视觉组件,实现了从大小、颜色和透明度三个维度对散点图的扩展,使用户可以从多个维度观察数据的特征,更全面地展示数据信息。