R语言绘制平行坐标图(PCP)示例前文在讲述冲击图(alluvial diagram)时提到了,它在某种形式上是平行坐标图(parallel coordinate plot,PCP)的一种变体,那么本篇顺便提一下什么是平行坐标图。

平行坐标图是可视化高维几何和分析多元数据的常用方法。为了显示n维空间中的一组对象,绘制了由n条平行且等距分布的轴,并将n维空间中的对象表示为在平行轴上具有顶点的折线,顶点在第i轴上的位置对应于该对象的第i维变量数值。

尽管是折线图类型,但和普通的折线图是有区别的,平行坐标图不局限于描述单一趋势关系(如时间序列的不同时间点、反应底物的不同浓度梯度等),可以为不同类型变量的数值描述。

然而平行坐标图的缺点在于,在数据非常密集时它们可能过于杂乱,导致难以辨认。解决此问题的通常做法是在图中突出显示感兴趣的对象或集合,同时淡化所有其它对象,这样就可以在滤除噪声的同时描述重要的部分。

并且,平行坐标图中,轴的排列顺序可能会影响对数据的理解方式,归因于相邻变量之间的关系比非相邻变量更容易理解。因此,对轴进行重新排序可以帮助发现变量之间的潜在模式或相关性。

此外,平行坐标图描述的大多数是数值变量的关系,而对于定性或分类变量比较勉强。相比之下,冲击图(alluvial diagram)提供了对定性或分类变量关系的更好可视化方案。

考虑到实际应用中,平行坐标图的出现频率并不高,因此本篇不对该图作过多的阐述。主要是通过3个R包,MASS、plotly和GGally,大致展示一下平行坐标图的基本绘制方法,以对这种统计图有个初步认识。

示例数据集

iris数据集,记录了150朵鸢尾花的花朵性状测量值。

#数据集,详情 ?irisdata(iris)head(iris)

这些鸢尾花来自三种物种,分别为setosa(n=50)、versicolor(n=50)和virginica(n=50)。

包含四种性状,分别为萼片长度(sepal length,cm)、萼片宽度(sepal width,cm)、花瓣长度(petal length,cm)和花瓣宽度(petal width,cm)。

接下来通过平行坐标图,描绘出三种鸢尾花的四种性状特征,在整体水平初步观测下它们之间的属性区别。

MASS包的平行坐标图

首先是MASS包,函数parcoord()可用于绘制平行坐标图,风格简洁朴素。

library(MASS)#赋值组别(鸢尾花物种)颜色iris[which(iris$Species == 'setosa'),'color'] iris[which(iris$Species == 'versicolor'),'color'] iris[which(iris$Species == 'virginica'),'color']  #绘制平行坐标图,详情 ?parcoordparcoord(iris[1:4], col = iris$color, var.label = TRUE)

在图中初步观察后,可以明显看到三种鸢尾花在四种性状特征的组成上是明显不同的。

GGally包的平行坐标图

GGally包是ggplot2的拓展包,延续了ggplot2的语法,因此对于熟悉ggplot2的同学们来说,使用GGally包的可视化调整将会非常容易上手。

library(GGally)#一个简单示例,后面的函数(颜色、主题、坐标轴调整等)和 ggplot2 的用法是一致的#详情 ?ggparcoordggparcoord(iris, columns = 1:4, groupColumn = 5,    scale = 'uniminmax',    showPoints = TRUE, alphaLines = 0.3) +scale_color_manual(values = c('#440154', '#36B677', '#FCE628')) +theme_bw()+theme(plot.title = element_text(size = 13)) +labs(x = '')

同样地,在图中初步观察后,可以明显看到三种鸢尾花在四种性状特征的组成上是明显不同的。

此外,通过函数ggparcoord()作图时,提供了多种对变量的标准化方法,由此可以获得不同的表现风格,对于探索变量间潜在结构很有帮助。大家有兴趣可以通过在ggparcoord()中添加参数“scale=”测试下。

plotly包的平行坐标图

plotly包提供了交互式风格,如果期望从图中查看感兴趣的一组变量,。

library(plotly)#以数值指代分组 idiris[which(iris$Species == 'setosa'),'species_id'] iris[which(iris$Species == 'versicolor'),'species_id'] iris[which(iris$Species == 'virginica'),'species_id']  #绘制平行坐标图,详情 ?plot_lyp     type = 'parcoords',    line = list(color = ~species_id,        colorscale = list(c(1, '#440154'), c(2, '#36B677'), c(3, '#FCE628'))),    dimensions = list(      list(range = range(iris$Sepal.Length), label = 'Sepal Length', values = ~Sepal.Length),      list(range = range(iris$Sepal.Width), label = 'Sepal Width', values = ~Sepal.Width),      list(range = range(iris$Petal.Length), label = 'Petal Length', values = ~Petal.Length),          list(range = range(iris$Petal.Width), label = 'Petal Width', values = ~Petal.Width)))p

同样地,在图中初步观察后,可以明显看到三种鸢尾花在四种性状特征的组成上是明显不同的。

plotly包的交互风格对于我们探索变量间潜在结构,以及识别重要的对象或者变量集合等很有帮助。

友情链接

基础统计图(以R作图为主)

柱形图类:堆叠柱形图分组柱形图双向柱形图蝴蝶图箱线图类:箱线图    提琴图    密度提琴图饼图类:饼图扇形图圆环图蜘蛛饼图旭日图星形图面积图类:堆叠面积图散点图类:二维散点图    三维散点图    火山图    曼哈顿图曲线图类:折线图和拟合线雷达图类:雷达图集合可视化:在线韦恩图韦恩图花瓣图UpSet图    网络图代Venn图圈图:关联弦图    简单弦图   基因组变异圈图SNV位点圈图三元相图:三元图树形图:聚类树    聚类树+堆叠柱形图    聚类树+排序散点图

相关图:相关矩阵    Mantel相关图

网络和流:CytoscapeGephi    冲击图

illustrator作图

illustrator作图教程1-绘制质膜结构图

illustrator作图教程2-乙烯信号转导通路图

语言的MASS包干什么的_R语言绘制平行坐标图(PCP)示例相关推荐

  1. r语言的MASS包干什么的_R语言综述的包

    Multivariate Statistics (多元统计) 基本的R包已经实现了传统多元统计的很多功能,然而CRNA的许多其它包提供了更深入的多元统计方法,下面做个简要的综述.多元统计的特殊应用在C ...

  2. r语言的MASS包干什么的_R语言常用包汇总

    转载于:https://blog.csdn.net/sinat_26917383/article/details/50651464?locationNum=2&fps=1 一.一些函数包大汇总 ...

  3. R语言在图上标出点坐标_R语言绘制平行坐标图(PCP)示例

    R语言绘制平行坐标图(PCP)示例 前文在讲述 时提到了,它在某种形式上是平行坐标图( parallel coordinate plot,PCP)的一种变体,那么本篇顺便提一下什么是平行坐标图. 平行 ...

  4. r语言alasso的系数怎么看_R语言如何做COX回归分析和nomogram?

    准备用几次推送与大家一起系统的学习下Nomogrm的绘制原理及其在R软件和SAS软件中的实现.首先声明,文章只是自己文献上的整理及自己的一点点理解,错误之处还请大家指出! 在wikipedia 里对N ...

  5. r语言的MASS包干什么的_怎么记住r语言这么多包?

    如果你觉得太长不想看,那就记得 @Yan He 同学说的R里面有caret,python里面用sklearn 常用检验函数: 常用作图函数包: ggplot2:万能 rattle:fancyRpart ...

  6. r语言在java中的实现_R语言在现实中的应用

    R语言在现实中的应用有哪些?主要有以下几种 - 1.数据科学 "哈佛商业评论"将数据科学家命名为"21世纪最性感的工作". Glassdoor将其命名为2016 ...

  7. r语言 整理、处理数据步骤_R语言万能数据清洗整理包Tidyverse(一)

    数据整理和清洗是任何统计分析的前提,也是最为困难的一个环节,很多软件也提供了数据整理和清洗的功能.甚至连我们常用的EXCEL也可以做这个工作,但是效率很低,而且容易出错,且无法完整保存清洗过程.R语言 ...

  8. r语言 整理、处理数据步骤_R语言之数据处理(一)

    在上一篇小文中,提到了关于R语言导入数据的一些方法,之后的重点就转向了数据的处理上.数据处理其实在整个数据分析项目中所占用的时间是比较多的,所以根据处理的目的不同,也有不同的处理方法.在R语言中,我通 ...

  9. r语言ggplot画两条曲线_R语言作图——Line plot with error

    原创:黄小仙 为了画今天的这个图,小仙决定凭空想象一台可以实时监控基因表达水平的设备,成功得到了这么一组数据. 想要画的图是这样子滴. Step1.绘图数据的准备 首先要把你想要绘图的数据调整成R语言 ...

最新文章

  1. AI人工智能开发的路径有三条,最成功的是机器学习技术:强化学习
  2. Redis服务停止报错解决方案[NOAUTH Authentication required]
  3. Linux/Unix环境下的make和makefile详解
  4. 用WINHEX合并两个或多个BIN文件
  5. 机器学习笔记:auto encoder
  6. Intel Realsense D435 USB线长、光纤线长测试(使用普通USB3.0数据线最长不能超过4M,使用普通USB3.0数据线+USB3.0光纤数据线,不能超过1+5=6M)
  7. Caused by: Parent package is not defined: json-default - [unknown location]
  8. 【MySql】mysql 慢日志查询工具之mysqldumpslow
  9. android 学习随笔二十三(动画:Fragment )
  10. php版密码字典生成 原创,真空密码字典生成器-使用教程和下载
  11. 微软服务器如何启动tomcat,Windows服务器下重启Tomcat服务步骤
  12. 微信号可以一年内第二次修改技巧吗?
  13. mac 安装软件报错
  14. 软件行业迎来拐点 厂商积极拥抱SaaS和云计算
  15. 在线英文打字测试(php)
  16. 【iOS】高德地图SDK的详细使用
  17. Galahad(板子:区间不重复数字的和,树状数组/线段树)
  18. 国内外php主流开源cms、SNS、DIGG、RSS、Wiki汇总
  19. 阿呆穿越当程序员之设计模式系列-总纲
  20. OBM,ODM,OEM分别指什么

热门文章

  1. iphone天行连接不上服务器未响应,天行连接不上 - 卡饭网
  2. netty channelinactive触发条件_Netty的Future和Promise
  3. linux 让暂停的进程恢复,Linux 下进程的挂起和恢复命令
  4. 力扣104. 二叉树的最大深度(JavaScript)
  5. php larvel https,Laravel 5-重定向到HTTPS
  6. linux data目录权限,Linux 文件目录权限
  7. c调用python接口_通过Python自带C/C++接口实现python与c/c++相互调用
  8. 山东大学计算机学院交叉,Xueying Qin
  9. java list类_java_List集合及其实现类
  10. 输入法快捷键_[秒杀必备]搜狗输入法自定义短语快捷键设置