R语言在图上标出点坐标_R语言绘制平行坐标图(PCP)示例
R语言绘制平行坐标图(PCP)示例
前文在讲述
时提到了,它在某种形式上是平行坐标图(
parallel coordinate plot,PCP)的一种变体,那么本篇顺便提一下什么是平行坐标图。
平行坐标图是可视化高维几何和分析多元数据的常用方法。为了显示n维空间中的一组对象,绘制了由n条平行且等距分布的轴,并将n维空间中的对象表示为在平行轴上具有顶点的折线,顶点在第i轴上的位置对应于该对象的第i维变量数值。
尽管是折线图类型,但和普通的折线图是有区别的,平行坐标图不局限于描述单一趋势关系(如时间序列的不同时间点、反应底物的不同浓度梯度等),可以为不同类型变量的数值描述。
然而平行坐标图的缺点在于,在数据非常密集时它们可能过于杂乱,导致难以辨认。解决此问题的通常做法是在图中突出显示感兴趣的对象或集合,同时淡化所有其它对象,这样就可以在滤除噪声的同时描述重要的部分。
并且,平行坐标图中,轴的排列顺序可能会影响对数据的理解方式,归因于相邻变量之间的关系比非相邻变量更容易理解。因此,对轴进行重新排序可以帮助发现变量之间的潜在模式或相关性。
此外,平行坐标图描述的大多数是数值变量的关系,而对于定性或分类变量比较勉强。相比之下,提供了对定性或分类变量关系的更好可视化方案。
考虑到实际应用中,平行坐标图的出现频率并不高,因此本篇不对该图作过多的阐述。主要是通过3个R包,MASS、plotly和GGally,大致展示一下平行坐标图的基本绘制方法,以对这种统计图有个初步认识。
示例数据集
iris数据集,记录了150朵鸢尾花的花朵性状测量值。
#数据集,详情 ?iris
data(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']
#绘制平行坐标图,详情 ?parcoord
parcoord(iris[1:4], col = iris$color, var.label = TRUE)
在图中初步观察后,可以明显看到三种鸢尾花在四种性状特征的组成上是明显不同的。
GGally包的平行坐标图
GGally包是ggplot2的拓展包,延续了ggplot2的语法,因此对于熟悉ggplot2的同学们来说,使用GGally包的可视化调整将会非常容易上手。
library(GGally)
#一个简单示例,后面的函数(颜色、主题、坐标轴调整等)和 ggplot2 的用法是一致的
#详情 ?ggparcoord
ggparcoord(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)
#以数值指代分组 id
iris[which(iris$Species == 'setosa'),'species_id']
iris[which(iris$Species == 'versicolor'),'species_id']
iris[which(iris$Species == 'virginica'),'species_id']
#绘制平行坐标图,详情 ?plot_ly
p
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语言在图上标出点坐标_R语言绘制平行坐标图(PCP)示例相关推荐
- R语言在图上标出点坐标_R语言做图plot参数
R语言做图plot参数函数名称:plot 用 途:作图 用 法:plot(x, y, --) 参 数: 1.符号和线条 pch:指定绘制点所使用的符号,取值范围[0 ...
- R语言在图上标出点坐标_从基变换的角度理解旋转矩阵R
在理解相机坐标系时,我们一定会接触相机的外参矩阵R,它将世界坐标系下的坐标转换到相机坐标系下: 这实际上是两个坐标系之间的变换,我们知道 矩阵是一个正交矩阵,所以它的3个行(列)向量是3维向量空间的一 ...
- 语言的MASS包干什么的_R语言绘制平行坐标图(PCP)示例
R语言绘制平行坐标图(PCP)示例前文在讲述冲击图(alluvial diagram)时提到了,它在某种形式上是平行坐标图(parallel coordinate plot,PCP)的一种变体,那么本 ...
- r语言barplot函数图中加标签_R语言中绘制条形图的简单方法
原标题:R语言中绘制条形图的简单方法 条形图(bar chart)是用宽度相同的条形的高度或长短来表示数据多少的图形.它主要用来展示不同分类(横轴)下某个数值型变量(纵轴)的取值.在实际中,条形图主要 ...
- r语言的MASS包干什么的_R语言综述的包
Multivariate Statistics (多元统计) 基本的R包已经实现了传统多元统计的很多功能,然而CRNA的许多其它包提供了更深入的多元统计方法,下面做个简要的综述.多元统计的特殊应用在C ...
- r语言的MASS包干什么的_R语言常用包汇总
转载于:https://blog.csdn.net/sinat_26917383/article/details/50651464?locationNum=2&fps=1 一.一些函数包大汇总 ...
- ggplot2箱式图两两比较_R语言进阶笔记2 | 长数据与ggplot2
1. 长数据是什么鬼? 之前介绍了如何将多个性状的箱线图放在一个图上,比如learnasreml包中的fm数据,它有h1~h5五年的株高数据,想对它进行作图. 「数据预览:」 > library ...
- r语言alasso的系数怎么看_R语言如何做COX回归分析和nomogram?
准备用几次推送与大家一起系统的学习下Nomogrm的绘制原理及其在R软件和SAS软件中的实现.首先声明,文章只是自己文献上的整理及自己的一点点理解,错误之处还请大家指出! 在wikipedia 里对N ...
- ggplot2箱式图两两比较_R语言ggplot2箱线图绘图总结
主要从如何看图.用图与作图三个方面来对箱线图进行理解和总结. 1.看图 箱线图概述图1 箱线图概述图2 如图所示,箱线图是将一组数据按照大小顺序排列后进行绘制的,包含6个数据节点,分别表示出数据的上边 ...
最新文章
- Centos 安装 Solr
- 重构-改善既有代码的设计:处理概括关系 (九)
- 保驾护航金三银四,含BATJM大厂
- ‘ssh-keygen‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- 微软lync 持续服务器,Lync Server 2013 Front-End服务器服务不会启动很长时间
- 微信小程序 事件传参
- 数据库系统异常排查之思路
- windows C++多线程(四):_beginthread的使用
- 大一结业项目之一(C#晨曦超市管理系统 )
- [latex]参考文献格式
- Java五子棋书,本文实例讲述了java实现的五子棋游戏代码,分享给大家供大家参考,具体代码如下package gyb.exam; import java.awt.Bo...
- [转]如何进行人脉管理
- sort()sorted()
- Invalid default value for
- USB口的红外条形码扫描器的另类使用 1
- 2020年OJ习题【map】
- SK海力士拟2022年后投资千亿美元新建4座半导体工厂
- 整存整取的文档设计[by absolutezero]
- 潍坊经贸每年单招计算机的成绩,山东经贸职业学院单招2021年春招分数线
- 如何简单、高效的进行留存和漏斗分析
热门文章
- Hadoop+hive+flask+echarts大数据可视化项目之hive环境搭建与系统数据的分析思路
- gaussdb数据库 oracle,GaussDB OLTP 100 华为数据库的创建脚本和模板
- tailwind css的使用
- 软件测试公司折扣政策,@软件企业看,这些税收优惠政策请收下
- 绕过preg_match
- wordpress搜索引擎蜘蛛统计插件SEO
- 无法连接到internet 小黄叹号长时间不消失的问题
- 去掉数组中重复出现元素的算法
- 苹果Mac实用技巧:忘记密码如何恢复?
- 【C++】-- AVL树详解