高维数据可视化必备图形-平行坐标图

2020-08-17 16:55:20 浏览数 (1)

作者:科研猫 | 小飞鼠

责编:科研猫 | 依米

如果我们想比较某个数值在不同分组之间的变化差异。或者随着时间序列的变化趋势,往往会用到折线图。折线图是在我们的科研绘图当中最为常用的图形之一。

正如在这个图形中,可以清晰的看到,某些观察值随着组别的变化而产生的变化。不过,随着基因组大数据的不断发展和应用,在很多科研绘图场景中,高维数据的处理变得越来越重要。很多时候我们接触到的数据。不仅仅是几个样本和十几个测量值而已,往往是成百上千个基因或者检测结果。如此高维的数据,如果我们想要观察他们的变化趋势,应该使用何种图形呢?

在上面的这张图形中,仅仅有两条线。如果有几十条、几百条折线,或者多个分组呢?不知道大家有没有考虑过这样的问题。遇到如此的数据,想要绘制折线图,我们该如何来进行展示?

刚好近些天,有粉丝问我这样一个问题。他说他们随访了一个肿瘤病人很长的时间,获取了这个病人从发病前到确诊肿瘤、再到肿瘤进展、肿瘤转移等各个时期的基因组数据。他想要分析各个基因在不同时期的变化趋势,并从中选取影响肿瘤转归的重要因子。

对于这个问题,如果单纯为了比较不同分期基因表达的差异。我们可以用箱线图,或者小提琴图,但是这些图形体现的仅仅是不同分组之间的差异。同一个基因是如何随着时间变化而变化的,貌似只能够通过折线图来进行展示。但是话又说回来,如此多的基因,来绘制折线图使用常规的绘图方法能够实现吗?今天我们就来给大家介绍一种全新的图形,它可以说是折线图的进阶版,非常适合进行高维数据变化趋势的可视化,那就是平行坐标图。

平行坐标图(parallel coordinate plot)是可视化高维多元数据的一种常用方法,为了显示多维空间中的一组对象,绘制由多条平行且等距分布的轴,并将多维空间中的对象表示为在平行轴上具有顶点的折线。顶点在每一个轴上的位置就对应了该对象在该维度上的中的变量数值,比如下面的这张图。

从图中我们可以看出,平行坐标图和折线图相比是非常相似的。不过,虽然平行折线图属于折线图的特殊类型,但是它和普通的折线图又具有明显的区别。因为平行折线图并不局限于描述某一种或者某几种趋势的变化关系。对于时间序列的不同时间节点、不同梯度的反应浓度等等数值,都可以使用平行坐标图来进行具体数值的描述。下面我们就跳过对图形背景的描述,进入到实际的绘图时间过程当中。

实例练习

首先我们来看一下绘图用的测试数据集。这个数据集当中分了4个肿瘤的阶段。总共有150个基因,150个基因当中,又按照通路分了三个组。这个就是我们的测试数据:

现在,我们要做的,就是比较这150个基因在4个分组中的变化趋势。那么下面我们就来进行图形的绘制。在这里我们用了GGally包中的ggparcoord()函数进行绘图。具体代码如下:

怎么样,这个图看上去很不错吧。在平行坐标轴中,它和普通折线图最大的一个区别就是它含有多条坐标轴。每一个坐标轴都代表了不同的维度,所以说坐标轴的排列方式和归一化的方式可能会影响观察者对数据的理解。因此在绘制平行坐标图的过程当中,坐标轴的顺序是极其重要的。在这里,我们的顺序是按照Grade1-4排列的,非常容易理解。关于坐标轴标准化的问题,由于每个分组之间的数据有高有低,坐标轴对应的数值也应该是不一致的。可是,如果把坐标轴的标度改变掉,那这个图看起来就会非常难以理解(比如即使是水平的曲线,也可能意味着数值的变化)。所以,我们在这里对于坐标轴的标度都是完全统一的。可是,有些数据相差太大或者太小,在图中如果用原始的数值进行绘制的话,图形有可能就完全重叠在一起了。

为了避免这个问题,我们对图形数值进行标化。ggparcoord()函数中标化的方法有很多,如果是“globalminmax”就是完全不变化,另外可以选用‘std’或者'robust', 'uniminmax', 'center', or 'centerObs'等多种标化方法,大家可以比较不同之处。

话说回来,平行坐标图也有它自己的缺点。那就是当数据非常庞大时,在图中的曲线就会显得非常密集,使得图形显得稍有杂乱,曲线难以辨认。那么如何解决这一问题呢?一种方法:当你的分组比较少的时候,可以通过facet分面的方法把不同分组分割开来即可。试试看:

此外,还有一种方法,我们经常做的一件事情,就是在图中把感兴趣的对象或者集合高亮出来。这样就容易辨别感兴趣的对象,同时淡化其他对象,达到消除背景曲线的目的。这样应该如何实现呢?其实也非常简单,就是把不同分组的color进行设置即可。比如这里,我把PI3K pathway组的基因设置成彩色,其他组设置成灰色。

好了,关于平行坐标图,我们就暂且讲到这里。不过还有一点要跟大家强调一下,平行坐标轴描述的大多是计量数据,对于定性数据或者分类变量,建议大家还是不要勉强使用平行坐标图。那么在这种情况下该用哪一种图形呢?对于分类变量和定性变量来说,我们有一种非常好看的图形,而且它和平行坐标图有着异曲同工之妙,那就是:桑基图(Sankey plot),它在分组数据中用的也是很多。

介绍完平行坐标图,给大家隆重介绍一下全网首个开源绘图平台-Hiplot。Hiplot是openbiox联合科研猫郑重推出的,免费注册,无需安装,一站式绘图的开源绘图平台,你还在等什么?

导言

数据可视化在科研工作中发挥着越来越重要的作用。基于可视化图形,我们可以更好地展示科研数据中的主要特征和规律。以生物医学为例,大多数临床医学学生和初级科研工作者一般需要花费数十天乃至数月的时间去熟悉和掌握常用的数据可视化工具,如 SPSS、Origin 和 Graphpad。之后才有可能去完成部分基础的数据统计分析和可视化。如果是要专门从事数据分析和建模方向的相关人员则还需额外学习一门甚至数门编程语言(如 MATLAB、R 和 Python )。而要达到能够自由探索数据的水平则还需要额外花费更多时间去深入学习和进阶。

近年来,随着各类云计算平台(如生物医学领域的 Galaxy 和 DNAnexus)、相关 IT 软硬件基础设施的发展(如分布式计算、容器技术、软件包管理器、数据分析流程构建框架等),初级科研工作者已经可以相对比较轻松地获取相关数据的上游分析结果。特别是当常规组学数据的上游分析流程趋于稳定和完善,数据上游分析流程的可自定义程度和可变程度已经大大降低。而数据分析下游流程中的可视化和个性化深度解读已经成为当前用户面临的最大挑战:

  1. 开源用户社区开发的可视化软件或方法大多还没有很好的整合在一个统一的用户接口之下;
  2. 国内缺少活跃的针对科研数据可视化的协作社区,“** 画图群”成为初级科研用户为数不多的选择;
  3. 国内缺少类似于 Graphpad、MATLAB 核心数据可视化软件和平台,在被美国禁用之后,只能花费额外成本进行流程迁移或重头开始开发;
  4. 相关数据可视化工具仍然相对匮乏,杂志和用户需求旺盛,已发布多年的 Circos 圆圈图可视化,通过封装一些便捷操作就可以发表文章:
    • Rasche H, Hiltemann S. Galactic Circos: User-friendly Circos plots within the Galaxy platform. Gigascience. 2020;9(6):giaa065. doi:10.1093/gigascience/giaa065;
    • Marx H, Coon JJ. MS-Helios: a Circos wrapper to visualize multi-omic datasets. BMC Bioinformatics. 2019;20(1):21. Published 2019 Jan 11. doi:10.1186/s12859-018-2564-9; Yu Y, Ouyang Y, Yao W.
    • shinyCircos: an R/Shiny application for interactive creation of Circos plot. Bioinformatics. 2018;34(7):1229-1231. doi:10.1093/bioinformatics/btx763)
  5. 国内外开发的一些平台和工具用户体验一般:用户界面不够美观;中英文支持的屈指可数;上手仍然有一定难度;部分平台的文件管理不太方便;用户能够主动参与平台建设的少之又少。

Hiplot简介

Hiplot 是由 openbiox 社区于 2019 年 10 月发起,并在新冠疫情爆发后快速发展的一个社区开发项目:致力于建立一个快速迭代、支持中英文环境的科研数据可视化平台和协作社区。目前该平台建设已初具规模,已提供基于 R 语言的 40 余种基础可视化的功能。

Hiplot 项目发起的初衷就是为了解决广大临床医学学生和科研工作者的基础科研方面的可视化需求:

  1. 基础可视化:覆盖大多数基础的科研可视化功能,参照 SPSS、GraphPad、国内外开发的相关可视化软件和工具
  2. 进阶可视化:包括 Shiny 在内的复杂可视化图形和应用;文献图表的重现和再分析;新的可视化图形展示插件:如基于 Circos、circlize 的二次开发;openbiox 社区贡献的可视化应用(如 UCSCXenaShiny 和 bioshiny)
  3. 其他任务:低计算量的其他任务(如文献数据资源下载、RESTful APIs 访问等)
  4. 文件管理(支持上传、下载、复制、移动、删除、在线预览和编辑等操作) Hiplot用户交互界面展示(部分)

登录

注册

基础绘图卡片浏览与检索

绘图示例 | 相关性热图

绘图示例 | 免疫浸润分析

文件上传窗口

文件浏览与管理

文件在线查看和编辑

(支持文本文件、XLSX、CSV、TXT 等)

文件在线查看和编辑

(支持文本文件、XLSX、CSV、TXT 等)

提交文献原文和附录下载任务

(基于 openbiox 社区贡献的 bget 项目)

提交文献原文和附录下载任务

(基于 openbiox 社区贡献的 bget 项目)

·

0 人点赞