R语⾔可视化之UpSetR包
具体内容移步我的博客
[图⽚上传失败...(image-3ecfcc-75)]
简介
集合可视化我们⽤得最多的是韦恩图,韦恩图在集合数少的时候是很好⽤的,但是当集合数多⽐如五个以上的时候那就会看花眼了,⽐如下⾯这副
含有6个集合韦恩图,是发表在Nature上的⽂章⾥的,漂亮是漂亮,但是眼都快看花了。
banana
今天介绍⼀个R包UpSetR,专门⽤来集合可视化,来源于UpSet,Python⾥⾯也有⼀个相似的包py-upt。此外还有个UpSetRshinyapp以
及源代码.
安装
两种⽅式安装:
#从CRAN安装
es("UpSetR")
#从Github上安装
devtools::install_github("hms-dbmi/UpSetR")
数据导⼊
UpSetR提供了两个函数
fromList
以及
fromExpression
将数据转换为UptR适⽤的数据格式。
#fromList
listinput<-list(one=c(1,2,3,5,7,8,11,12,13),two=c(1,2,4,5,
10),three=c(1,5,6,7,8,9,10,12,13))
#fromExpression
expressionInput<-c(one=2,two=1,three=2,`one&two`=1,`one&three`=4,
`two&three`=1,`one&two&three`=2)
接下来就可以绘制绘制图形了
library(UpSetR)
upt(fromList(listinput),="freq")
#下⾯绘制的图形等同于上图
upt(fromExpression(expressionInput),="freq")
[图⽚上传失败...(image-72066a-75)]
参数详解
下⾯所有的例⼦都将使⽤UpSetR内置的数据集
movies
来绘制。
#导⼊数据
movies<-(("extdata","",package="UpSetR"),header=TRUE,p=";")
#先⼤致浏览⼀下该数据集,数据集太长,就只看前⼏列
knitr::kable(head(movies[,1:10]))
[图⽚上传失败...(image-bb479-75)]
该数据集展⽰的是电影名(name)、发⾏时间(ReleaDate)以及电影类型,多了去了就不详讲了,⾃个可以看去。
UptR绘制集合可视化图形使⽤函数
upt()
。
upt(movies,nts=6,=30,=2,=1,="GenreInterctions",="MoviesPerGenre",=c(1.3,
[图⽚上传失败...(image-316b49-75)]
解释⼀下上⾯部分参数:
nts:顾名思义,就是展⽰⼏个集合,
movies
数据集由20⼏个集合,不可能全部展⽰,另外从图中可以看出,这6个集合应该不是按顺序选
择的。
:柱⼦上的数字看到了吧,这个参数就是调整数字⾓度的,可有可⽆的
/:坐标轴名称
():有六个数字,分别控制c(interctionsizetitle,interctionsizeticklabels,tsizetitle,tsizeticklabels,t
names,numbersabovebars)。
很多时候我们想要看特定的⼏个集合,UpSetR满⾜我们的需求。
upt(movies,ts=c("Action","Adventure","Comedy","Drama","Mystery",
"Thriller","Romance","War","Western"),=c(0.55,0.45),="freq")
[图⽚上传失败...(image-148c9-75)]
⽂中的参数:
:控制上⽅条形图以及下⽅点图的⽐例
:如何排序,这⾥
freq
表⽰从⼤到⼩排序展⽰,其他选项有
degree
以及先按
freq
再按
degree
排序。
各个变量也可以通过参数
来排序
upt(movies,ts=c("Action","Adventure","Comedy","Drama","Mystery",
"Thriller","Romance","War","Western"),=c(0.55,0.45),="freq",
=TRUE)
[图⽚上传失败...(image-b1f3d6-75)]
也可以按
group
进⾏展⽰,这图展⽰的就是按各个变量⾃⾝、两个交集、三个交集...依次展⽰。参数
cutoff
控制每个
group
显⽰⼏个交集。
参数
intercts
控制总共显⽰⼏个交集。
upt(movies,nintercts=70,="ts",cutoff=7)
[图⽚上传失败...(image-da4d6b-75)]
还有很多参数⽐如控制颜⾊的参数,点、线⼤⼩等,具体可查看?upt
queries参数
queries参数分为四个部分:
query
,
param
,
color
,
active
.
query:指定哪个query,UpSetR有内置的,也可以⾃定义,说到底就是⼀个查询函数
param:list,query作⽤于哪个交集
color:每个query都是⼀个list,⾥⾯可以设置颜⾊,没设置的话将调⽤包⾥默认的调⾊板
active:被指定的条形图是否需要颜⾊覆盖,TRUE的话显⽰颜⾊,FALSE的话则在条形图顶端显⽰三⾓形
内置的interctsquery
upt(movies,queries=list(list(query=intercts,params=list("Drama","Comedy","Action"),color="orange",active=T),
list(query=intercts,params=list("Drama"),color="red",active=F),
list(query=intercts,params=list("Action","Drama"),active=T)))
[图⽚上传失败...(image-94a27a-75)]
内置的elementsquery
此query可以可视化特定交集在不同条件下的情况
upt(movies,queries=list(list(query=elements,params=list("AvgRating",3.5,4.1),color="blue",active=T),
list(query=elements,params=list("ReleaDate",1980,1990,2000),color="red",active=F)))
[图⽚上传失败...(image-46d85d-75)]
⾃定义⼀个query
myfunc<-function(row,relea,rating){
newdata<-(row["ReleaDate"]%in%relea)&(row["AvgRating"]>rating)
}
upt(movies,queries=list(list(query=myfunc,params=list(c(1950,1960,1990,2000),3.0),color="red",active=T)))
[图⽚上传失败...(image-42e44a-75)]
添加query图例
upt(movies,="top",queries=list(list(query=intercts,
params=list("Drama","Comedy","Action"),color="orange",active=T,
="Funnyaction"),list(query=intercts,params=list("Drama"),
color="red",active=F),list(query=intercts,params=list("Action",
"Drama"),active=T,="Emotionalaction")))
[图⽚上传失败...(image-31b478-75)]
参数
主要是⽤于添加属性图,内置有柱形图、散点图、热图等
柱形图
upt(movies,="black",queries=list(list(query=intercts,
params=list("Drama"),active=T)),=list(gridrows=50,
plots=list(list(plot=histogram,x="ReleaDate",queries=F),list(plot=histogram,
x="AvgRating",queries=T)),ncols=2))
[图⽚上传失败...(image-e78a92-75)]
散点图
upt(movies,="black",queries=list(list(query=intercts,
params=list("Drama"),color="red",active=F),list(query=intercts,
params=list("Action","Drama"),active=T),list(query=intercts,
params=list("Drama","Comedy","Action"),color="orange",active=T)),
=list(gridrows=45,plots=list(list(plot=scatter_plot,
x="ReleaDate",y="AvgRating",queries=T),list(plot=scatter_plot,
x="AvgRating",y="Watches",queries=F)),ncols=2),="bottom")
[图⽚上传失败...(image-c7cf8c-75)]
箱线图
箱线图可以展⽰数据的分布,通过参数
y
控制,最多可以⼀次性显⽰两个箱线图
upt(movies,y=c("AvgRating","ReleaDate"))
[图⽚上传失败...(image-e67e00-75)]
还有⼀个⼗分重要的功能IncorporatingSetMetadata这⾥就不讲了,有兴趣的可以参考这份⽂档
SessionInfo
ssionInfo()
##Rversion3.4.2(2017-09-28)
##Platform:x86_64-w64-mingw32/x64(64-bit)
##Runningunder:Windows10x64(build15063)
Matrixproducts:default
locale:
##[1]LC_COLLATE=Chine(Simplified)_China.936
##[2]LC_CTYPE=Chine(Simplified)_China.936
##[3]LC_MONETARY=Chine(Simplified)_China.936
##[4]LC_NUMERIC=C
##[5]LC_TIME=Chine(Simplified)_China.936
attachedbapackages:
##[1]statsgraphicsgrDevicesutilsdatatsmethodsba
otherattachedpackages:
##[1]UpSetR_1.3.3
loadedviaanamespace(andnotattached):
##[1]Rcpp_0.12.13knitr_1.17magrittr_1.5munll_0.4.3
##[5]colorspace_1.3-2rlang_0.1.2stringr_1.2.0highr_0.6
##[9]plyr_1.8.4tools_3.4.2grid_3.4.2gtable_0.2.0
##[13]htmltools_0.3.6yaml_2.1.14lazyeval_0.2.0rprojroot_1.2
##[17]digest_0.6.12tibble_1.3.4gridExtra_2.3ggplot2_2.2.1
##[21]evaluate_0.10.1rmarkdown_1.6labeling_0.3stringi_1.1.5
##[25]compiler_3.4.2scales_0.5.0backports_1.1.1
联系⽅式:
个⼈简介:
严涛
浙江⼤学作物遗传育种在读研究⽣(⽣物信息学⽅向)
伪码农,R语⾔爱好者,爱开源
本文发布于:2022-11-24 03:42:21,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/9671.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |