Pyecharts之散点图的视觉扩展

在数据可视化中,散点图是一种强大的工具,可用于展示数据点在二维平面上的分布情况。通过添加各种视觉组件,我们可以让散点图变得更加丰富和具有表现力,更能反映数据的多维度特征。本文将详细解读如何为散点图添加不同的视觉组件,包括根据数据大小映射图形大小、同时映射图形大小和颜色,以及综合运用大小、颜色和透明度等多维度的视觉组件。

一、散点图添加视觉组件(大小)

以下是 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_opacityVisualMapOpts 中没有默认值,需要手动设置。

这个函数通过添加三个视觉组件,实现了从大小、颜色和透明度三个维度对散点图的扩展,使用户可以从多个维度观察数据的特征,更全面地展示数据信息。

相关推荐
m0_6174939431 分钟前
Python OpenCV 透视变换(Perspective Transform)详解与实战
开发语言·python·opencv
小李不困还能学35 分钟前
PyCharm下载安装与配置教程
ide·python·pycharm
博观而约取厚积而薄发44 分钟前
Pytest 从入门到精通,一篇就够(超详细实战教程)
python·测试工具·单元测试·自动化·pytest
imzed1 小时前
使用 Playwright + Pytest 构建 Web UI 自动化测试框架
python·自动化·pytest
普通网友1 小时前
pytest一些常见的插件
开发语言·python·pytest
时空系1 小时前
Python 高性能高压缩打包器 —— 基于 JianPy 语义分析引擎
python
cndes1 小时前
给Miniconda换源,让包下载更迅速
开发语言·python
Metaphor6922 小时前
使用 Python 添加、隐藏和删除 PDF 图层
python·pdf·图层
丨白色风车丨2 小时前
【Python 计算机视觉】基于 Dlib+OpenCV 实现实时人眼疲劳检测(闭眼预警)
python·opencv·计算机视觉