可视化框架设计-视觉通道

视觉通道

  • 视觉通道简介
  • 数据如何映射到视觉通道
  • G2视觉通道的设计
  • 更多

视觉通道简介

数据可视化的核心内容是可视化编码,是将数据信息映射成可视化元素的技术。可视化编码由两部分组成:几何标记(图形元素)和视觉通道。

  • 几何标记:可视化中标记通常是一些几何图形元素,例如:点、线、面、体
  • 视觉通道:用于控制几何标记的展示特性,包括标记的位置、大小、形状、方向、色调、饱和度、亮度等

视觉通道的类型

人类对视觉通道的识别有两种基本的感知模式。第一种感知模式得到的信息是关于对象本身的特征和位置等,对应视觉通道的定性性质和分类性质;第二种感知模式得到的信息是对象某一属性在数值上的大小,对应视觉通道的定量性质或者定序性质。因此我们将视觉通道分为两大类:

  • 定性(分类)的视觉通道,如形状、颜色的色调、空间位置
  • 定量(连续、有序)的视觉通道,如直线的长度、区域的面积、空间的体积、斜度、角度、颜色的饱和度和亮度等

然而两种分类不是绝对的,例如位置信息,既可以区分不同的分类,又可以分辨连续数据的差异

视觉通道的表现力

进行可视化编码时我们需要考虑不同视觉通道的表现力和有效性,主要体现在下面几个方面:

  • 准确性,是否能够准确得在视觉上表达数据之间的变化
  • 可辨认性,同一个视觉通道能够编码的分类个数,即可辨识的分类个数上限
  • 可分离性,不同视觉通道的编码对象放置到一起,是否容易分辨
  • 视觉突出,重要的信息,是否用更加突出的视觉通道进行编码

视觉通道的表现力: 

数据和视觉通道的映射

可视化编码的过程可以理解为数据的字段和可视化通道之间建立对应关系的过程,它们的映射关系如下: 
* 一个数据字段对应一个视觉通道(1:1) 
* 一个数据字段对应多个视觉通道(1:n) 
* 多个数据字段对应一个视觉通道(n:1)

我们看下面的示例:

  • 班级的学生数

本图存在以下1:1的映射关系:

  • x轴:班级名作为分类数据映射到位置的视觉通道
  • y轴:学生数是一个连续性数据,映射到矩形的长度
chart.interval().position(‘班级*人数‘);
  • 不同班级不同的颜色

本图存在以下映射关系:

  • x轴:班级名作为分类数据映射到位置
  • y轴:学生数是一个连续性数据,映射到矩形的长度
  • 同时,为了区分不同的班级,将班级也映射到颜色

所以班级的映射存在两个视觉通道 1:n。

chart.interval().position(‘班级*人数‘).color(‘班级‘);
  • 人数和班级共同决定颜色

颜色由班级和学生人数共同决定,规则如下:

  • 如果班级等于 ‘1’ 或者人数大于 40 则映射成红色
  • 其他则映射成绿色

班级和学生人数共同决定了颜色映射,所以此映射是 n:1

chart.interval().position(‘班级*人数‘).color(‘班级*人数‘,function(grade,count){
  if (grade == ‘1‘ || count > 40) {
    return ‘red‘;
  } else {
    return ‘green‘;
  }
});

G2 视觉通道的设计

实现的视觉通道

在 G2 中我们并没有实现上面提到的所有的视觉通道,而是下面几种:

  • position(位置),二维坐标系内可以映射到 x, y,三维坐标系可以映射到 x, y, z
  • color(颜色),包含了色调、饱和度和亮度
  • size(大小),不同的几何图形对大小的定义有所差异
  • shape(形状),几何图形的形状决定了某个图表类型的表现方式。例如点图,可以使用圆点、三角形、小的图片表示;线图可以使用折线、曲线、点线等表现形式
  • opacity(透明度),图形的透明度,这个属性从某种意义上来说可以使用颜色代替,需要使用 ‘rgba’ 的形式,所以在 G2 中我们独立出来。

语法设计

G2 中的视觉通道作为标记的属性存在,需要支持以下功能:

  • 支持1:1,1:n,n:1多种数据和视觉通道的映射
  • 不同的标记决定图形对视觉通道的解析各不相同

类结构如下: 

所以视觉通道在G2的语法中这样定义:

chart.<geom><attr>(dims,[callback])

  • geom,几何标记,在后面的章节中介绍
  • attr,几何标记的属性,对应视觉通道
  • dims,参与单个视觉通道映射的字段
  • callback,如何解析视觉通道,可以不提供,G2提供了默认的视觉通道解析方式

除了attr(dims,callback)的函数原型外,G2为了用户的便利性,结合各个视觉通道的特点,也提供了更为便捷的使用方式,在本章后面有详细的介绍。

示例:

chart.point().position(‘a*b‘).color(‘c‘);

chart.interval().position(‘a*b‘).color(‘c‘,function(c){
  if(c) {
    return ‘red‘
  }
  return ‘green‘;
});

position

位置是唯一的既可以用于编码分类,又可用于编码定序或者定量的数据属性。在二维平面上有垂直方向和水平方向两个可以分离的视觉通道。所以position属性支持的用户输入方式:

  • postion(‘dim’),仅使用一维的水平方向(x轴)的视觉通道,此时,垂直方向的视觉通道没有数据含义。
  • postion(‘dim1*dim2’),同时使用水平和垂直2个视觉通道

一维点图

二维点图

color

从可视化编码的角度对颜色进行分析,可以将颜色分为亮度、饱和度和色调三个视觉通道,其中前2个可以认为是定量和定序的视觉通道,而色调属于定性的视觉通道。而我们在G2中我们并不区分这3个视觉通道,因此我们认为颜色既是分类又是定量的视觉通道。所以color方法有更多的快捷方式:

  • color(‘c’),使用默认的回调函数,读取一个数组中的颜色进行颜色的映射
  • color(‘c’,colors),指定映射的颜色类型,此时通常映射到分类数据
  • color(‘c’,’color1-color2-colorn’),指定颜色的渐变路径,在这个渐变路径映射定量(连续)的数据
  • color(‘red’) 直接指定常量,不进行数据映射

分类数据的颜色映射:

定量(连续)数据的颜色映射:

size

从可视化的角度分析,大小(size)是一个复杂的视觉通道,对于不同的标记含义不完全一致:

  • 对于点来说size 对应的是点的半径
  • 对于线来说size对应的是线的粗细
  • 对于柱状图来说size是柱状图的宽度

size 的快捷方式:

  • size(dim) 指定映射到size的字段,内置最大和最小(像素大小)
  • size(dim,max,min),指定映射到size字段外,还提供了最大像素和最小像素
  • size(10) 直接指定像素大小

更多的对size的解释可以查看后面章节的各个几何标记中对size的解析

点图大小:

柱状图的大小:

shape

不同的几何标记有不同的shape(形状),各自的章节中有详细介绍。shape这个视觉通道受其他几个视觉通道影响,比如:shape可以将color映射到填充色上,也可以映射到边框上。shape方法的使用方式比较简单,常用于映射分类数据:

  • shape(‘dim’),将指定的字段映射到内置的shapes数组中
  • shape(‘dim’,shapes),用户自己提供shapes数据,来进行数据映射
  • shape(‘dim’,callback),使用回调函数获取shape
  • shape(‘circle’),指定常量,映射到固定的shape

点图的形状:

柱状图的形状:

opacity

透明度在视觉编码过程中,只能进行定量(连续)数据的映射,作为颜色的一个补充使用,所以提供以下快捷方式:

  • opacity(‘dim’) 指定透明度映射的字段
  • opacity(0.5) 直接指定透明度常量
  • opacity(‘dim’,callback) 使用回调函数获取透明度

更多

本章介绍了视觉通道和G2中视觉通道的设计,不同视觉通道在各种几何标记中的实现不同,后面的章节中会有更详细的介绍,下一章节,我们介绍坐标系,并探讨不同视觉通道在不同坐标系下的不同表现。

G2站点: http://g2.alipay.com

时间: 2024-10-10 04:16:44

可视化框架设计-视觉通道的相关文章

可视化框架设计-序

数据可视化与G2 目录 目的 什么是数据可视化 数据可视化的阶段 G2的定位和规划 目的 从事数据可视化有2,3年的时间了,发现大多数人对数据可视化的认知就是绘制图表.因此我想写一些可视化框架设计的文章,这些文章,提供了一整套可视化框架的设计思路和实现细节,希望能让大家对可视化有更多的理解,更好的在业务中使用可视化. 什么是数据可视化 数据可视化使用数据和图形技术将信息从数据空间映射到视觉空间,是一门跨越了计算机图形学.数据科学.自然科学和人机交互等领域的交叉学科. 上面的领域模型过于复杂,我们

可视化框架设计-图表类型

目录 图形标记和图表类型 图表类型(Geom)和图形形状 如何设计图形形状(Shape) 更多 图形标记和图表类型 数据可视化的核心在于可视化编码,而可视化编码由图形标记和视觉通道组成,视觉通道在前面的章节中已经讲解过,本章的内容是介绍图形标记,在可视化设计中我们将常见的图形标记定义成图表类型. 根据图形标记可以代表的数据维度来划分,图形标记分为: 零维,点是常见的零维图形标记,点仅有位置信息 一维,常见的一维图形标记有线 二维,二维平面 三维,常见的立方体.圆柱体都是三维的图形标记 图形标记自

框架设计总结

框架设计总结 温昱老师的<一线架构师实现指南>读完好几天了,本书很多大牛都有推荐,自己从头到底一字不漏的看了,很多关键的方法,做了标记,看了多次,是一本介绍构架设计方面很好的书,准备把它做为工具书,在开始中用好其中的方法. 大学学的软件工程,软件设计要从需求分析.可行性分析.概要设计.软件设计.软件开发和测试,说的是一个大的过程,具体到针对一个项目时还是会感觉无从下手:本书提供的ADMEMS方法体系,把这一过程形成方法体系,让框架设计的操作性更强,四个核心主张: 1)       方法体系是大

《开源框架那些事儿22》:UI框架设计实战

UI是User Interface的缩写,通常被认为是MVC中View的部分,作用是提供跟人机交互的可视化操作界面.MVC中Model提供内容给UI进行渲染,用户通过UI框架产生响应,一般而言会由控制层调用业务逻辑进行处理,并把处理结果以Model方式返回View,再次渲染.UI框架的大致过程就是如此,按实现方式可以分为RIA和瘦客户端方式,目前基于B/S的瘦客户端方式比较流行.UI框架套路上很简单,但是想要做好可就不容易了.目前基于MVC的框架灿若繁星,不客气的说是个软件公司就有自己的技术框架

nginx源码分析--框架设计 &amp; master-worker进程模型

Nginx的框架设计-进程模型 在这之前,我们首先澄清几点事实: nginx作为一个高性能服务器的特点,其实这也是所有的高性能服务器的特点,依赖epoll系统调用的高效(高效是相对select/poll这些系统调用的,底层有一个链表和红黑树,避免了轮询,减少了用户空间和系统空间之间的数据传递等),非阻塞(所有的操作都是非阻塞,这样),多进程(master-slave进程模型),这些事实使得nginx成为一个高性能服务器的前提条件. 既然作为一个软件(http服务器),相对于一个网络库而言肯定有更

Android通用框架设计与完整电商APP开发

第1章 课程介绍及APP效果展示(Java版)本章概述了本课程大家能学到什么,老师如何讲解,为什么这么讲解,并介绍了框架的整体架构设计与模块分解,最后展示了用自己设计的框架开发出来的完整电商APP的效果图(服务端API快速搭建教程:http://www.imooc.com/article/19001) ...1-1 课程导学1-2 项目架构设计与模块分解 第2章 项目初始化本章将从零搭建一个空项目,实践项目搭建的过程,并额外教大家搭建一个基于Go语言的Web版Git服务器,实现代码托管的自举.(

静态网页框架设计首次体验(文章改)

根据教材与上网成功解决了Tomcat与Myeclipse的安装,同时熟悉了Java web创建项目到部署运行整个过程.今天起正式开始学习有关Java web的编程部分.Java web静态网页(HTML网页)的标记含义.基本语法的介绍到框架设计基本模板与案例,今天的学习的内容,让网页编程有了一个初步的框架.结合自身所在协会的情况,计划制作一个关于协会的网页,已有初步想法,望通过学习不断完善和修改协会网站.根据今天所学,并参考书本30页框架设计案例对网页进行初步搭建. 具体代码如下 TW.jsp:

Linux设备驱动框架设计

引子 Linux操作系统的一大优势就是支持数以万计的芯片设备,大大小小的芯片厂商工程师都在积极地向Linux kernel提交设备驱动代码.能让这个目标得以实现,这背后隐藏着一个看不见的技术优势:Linux内核提供了一套易于扩展和维护的设备驱动框架.Linux内核本身提供一套设备驱动模型,此模型提供了Linux内核对设备的一般性抽象描述,包括设备的电源管理.对象生命周期管理.用户空间呈现等等.在设备模型的帮助下,设备驱动开发工程师从设备的一般性抽象中解脱出来.但是每个设备的具体功能实现还需要大量

SharePoint 2013 可视化工作流设计图解

SharePoint 2013 可视化工作流设计图解 地点:西宁: SharePoint 2013 加BI 项目. 平台环境:SharePoint2013   系统环境windows server2012: 开发工具:SharePoint designer 2013   前提:服务器安装完成Visio 2013 旗舰版: 使用账户有权限 1,打开 SPD2013 --打开SharePoint 2013 网站--在导航菜单里找到 List Workflow 如下图:本实例 创建文档工作流. 2,单