UpSetR 高级参数使用教程
在《UpSetR:多数据集绘图可视化处理利器》中我们介绍了 UpSetR 的一些概念和绘图基础参数使用,今天我们来学习一下 UpSetR 的 queries 和 attribute.plots 这两个高级参数的使用。
一
queries 参数
queries 参数里面的每一个 list 都是由四个部分组成:query, param, color, active。
query:查询函数,可以用系统自带的,也可以自己写。
param:参数,查询函数(query)作用于哪些数据集,是一个 list。
color:每个 query 在绘图中的颜色,没设置的话将调用 UpSetR 默认的调色板。
active:决定 query 将如何表示在图上。TRUE,intersection size 条形图将会被 query 中的条形图覆盖;FALSE,intersection size 条形图将会被加上一个三角形(a jitter point),这个三角形的位置是波动性的。
示例1:内置的交集查询
本示例展示了如何通过内置的交集查询(intersection query)intersects 去查找并展示特定的交集元素(elements in specific intersections)。本示例中 active query 的颜色来源于 UpSetR 中默认的调色板。
upset(movies, queries = list(list(query = intersects, params = list("Drama", "Comedy", "Action"), color = "orange", active = T),
list(query = intersects, params = list("Drama"), color = "red", active = F),
list(query = intersects, params = list("Action", "Drama"), active = T)))
【左右滑动查看完整信息】

Drama, Comedy, Action 的交集(10)已经变成了橘色(color="orange"),上方的 Intersection Size 条形图已经被橘色的条形图覆盖(active=T);
Action, Drama 的交集(68)也变成了默认的蓝色。
Drama 的圆点变成了红色(color="red"),上方的 Intersection Size 条形图顶部被一个红色的三角形覆盖(active=F)。
示例2:内置的元素查询
本示例展示了如何通过内置的元素查询(element query)函数 elements 可视化展示特定的元素在交集中是如何分布的。
upset(movies, queries = list(list(query = elements, params = list("AvgRating", 3.5, 4.1), color = "blue", active = T),
list(query = elements, params = list("ReleaseDate", 1980, 1990, 2000), color = "red", active = F)))
【左右滑动查看完整信息】

蓝色的条形图表示,默认的 6 个数据集中符合 AvgRating == 3.5 或者 AvgRating == 4.1 在各个集合中的个数分布。
红色三角形表示,6 个数据集中符合 ReleaseDate==1980, 1990, 2000 在各个集合中的分布,它们的位置存在波动性(active = F)。
示例3:使用表达参数进行交集和元素子集查询
本示例展示如何通过使用 expression 参数获取交集和元素查询的子集(subset the results of element and intersection queries)。
upset(movies, queries = list(list(query = intersects, params = list("Action", "Drama"), active = T),
list(query = elements, params = list("ReleaseDate", 1980, 1990, 2000), color = "red", active = F)),
expression = "AvgRating > 3 & Watches > 100")
【左右滑动查看完整信息】

示例4:自定义查询
# Creating a custom query to operate on the rows of the data.
Myfunc <- function(row, release, rating) {
data <- (row["ReleaseDate"] %in% release) & (row["AvgRating"] > rating)
}
# Applying the created query to the queries parameter.
upset(movies, queries = list(list(query = Myfunc, params = list(c(1970, 1980, 1990, 1999, 2000), 2.5), color = "blue", active = T)))
【左右滑动查看完整信息】

示例5:使用查询图例
UpSetR 可以通过使用 query.legend 添加 queries 的图例。query.legend 的位置可以在头部(top)或者底部(bottom);我们也可以使用 query.name 参数在 queries 中给每一个 query 自定义指定的名称。
upset(movies, query.legend = "top", queries = list(list(query = intersects,
params = list("Drama", "Comedy", "Action"), color = "orange", active = T,
query.name = "Funny action"), list(query = intersects, params = list("Drama"),
color = "red", active = F), list(query = intersects, params = list("Action",
"Drama"), active = T, query.name = "Emotional action")))
【左右滑动查看完整信息】

示例6:queries 绘图总结
综合示例1——示例5,绘制图形如下:
upset(movies, query.legend = "bottom", queries = list(list(query = Myfunc, params = list(c(1970,
1980, 1990, 1999, 2000), 2.5), color = "orange", active = T), list(query = intersects,
params = list("Action", "Drama"), active = F), list(query = elements, params = list("ReleaseDate",
1980, 1990, 2000), color = "red", active = F, query.name = "Decades")),
expression = "AvgRating > 3 & Watches > 100")
【左右滑动查看完整信息】

二
attribute.plots 参数
attribute.plots 主要是用于添加属性图,内置有柱形图、散点图、热图等。该参数被分解成 3 部分:gridrows, plots, 以及 ncols。
gridrows:用于指定扩展绘图窗口以增加属性图的空间。UpSetR 默认是在 100 x 100 的网格上进行绘图的,因此如果我们将网格(gridrows)设置为 50,则新的网格布局将变成 150 x 100,为属性图留出 1/3 的网格空间。
plots:接收一个参数列表,这些参数包括 plot, x, y(如果适用的话),以及 queries。
plot:一个返回 ggplot 的函数。
x:ggplot 图形中的 x 轴标题(string)。
y:ggplot 图形中的 y 轴标题(string)。
queries:指示是否将当前的 queries 与绘图重叠。如果 queries 为 TRUE,属性图(attribute plot)将会被来源于查询(queries)的数据覆盖;否则,查询结果将不会绘制在属性图上。
ncols:指示如何在 gridrows 空间中绘制图形。如果输入了 2 个属性图(attribute plots)且 ncols=1,属性图将会纵向一个个排列;如果输入了 2 个属性图(attribute plots)且 ncols=2,属性图将并排显示。
示例1:直方图
本示例展示了如何在 UpSetR 中添加一个内置直方属性图。如果 main.bar.color 未指定为黑色,则包含在黑色 intersection size 柱状条中的元素将在属性图中表示为灰色。
upset(movies, main.bar.color = "black", queries = list(list(query = intersects,
params = list("Drama"), active = T)), attribute.plots = list(gridrows = 50,
plots = list(list(plot = histogram, x = "ReleaseDate", queries = F), list(plot = histogram,
x = "AvgRating", queries = T)), ncols = 2))
【左右滑动查看完整信息】

示例2:散点图
本示例展示了如何在 UpSetR 中添加一个内置散点属性图。需要注意的是,在本示例中使用了 query.legend。
upset(movies, main.bar.color = "black", queries = list(list(query = intersects, params = list("Drama"), color = "red", active = F),
list(query = intersects, params = list("Action", "Drama"), active = T),
list(query = intersects, params = list("Drama", "Comedy", "Action"), color = "orange", active = T)),
attribute.plots = list(gridrows = 45, plots = list(list(plot = scatter_plot, x = "ReleaseDate", y = "AvgRating", queries = T),
list(plot = scatter_plot, x = "AvgRating", y = "Watches", queries = F)), ncols = 2),
query.legend = "bottom")
【左右滑动查看完整信息】

示例3:自定义属性图
myplot <- function(mydata, x, y) {
plot <- (ggplot(data = mydata, aes_string(x = x, y = y, colour = "color")) +
geom_point() + scale_color_identity() + theme(plot.margin = unit(c(0,
0, 0, 0), "cm")))
}
another.plot <- function(data, x, y) {
data$decades <- round_any(as.integer(unlist(data[y])), 10, ceiling)
data <- data[which(data$decades >= 1970), ]
myplot <- (ggplot(data, aes_string(x = x)) + geom_density(aes(fill = factor(decades)),
alpha = 0.4) + theme(plot.margin = unit(c(0, 0, 0, 0), "cm"), legend.key.size = unit(0.4,
"cm")))
}
【左右滑动查看完整信息】
使用上面定义的 myplot 应用于 UpSetR 绘图。
upset(movies, main.bar.color = "black", queries = list(list(query = intersects,
params = list("Drama"), color = "red", active = F), list(query = intersects,
params = list("Action", "Drama"), active = T), list(query = intersects,
params = list("Drama", "Comedy", "Action"), color = "orange", active = T)),
attribute.plots = list(gridrows = 45, plots = list(list(plot = myplot, x = "ReleaseDate",
y = "AvgRating", queries = T), list(plot = another.plot, x = "AvgRating",
y = "ReleaseDate", queries = F)), ncols = 2))
【左右滑动查看完整信息】

示例4:属性图绘图总结
综合示例 1 的内置直方图、示例 2 的内置散点图,以及示例 3 的自定义属性图,绘图如下:
upset(movies, main.bar.color = "black", mb.ratio = c(0.5, 0.5), queries = list(list(query = intersects,
params = list("Drama"), color = "red", active = F), list(query = intersects,
params = list("Action", "Drama"), active = T), list(query = intersects,
params = list("Drama", "Comedy", "Action"), color = "orange", active = T)),
attribute.plots = list(gridrows = 50, plots = list(list(plot = histogram,
x = "ReleaseDate", queries = F), list(plot = scatter_plot, x = "ReleaseDate",
y = "AvgRating", queries = T), list(plot = myplot, x = "AvgRating",
y = "Watches", queries = F)), ncols = 3))
【左右滑动查看完整信息】

示例5:箱线图
箱线图(Box plots)可以展示所有交集的点属性分布,交集箱线图可以一次性最多展示 2 个箱线图的总体情况。boxplot.summary 参数接收包含 1 个或者 2 个属性名称的向量数据(vector)。
upset(movies, boxplot.summary = c("AvgRating", "ReleaseDate"))
【左右滑动查看完整信息】

关于 UpSetR 包的使用就介绍到这里,该包的其他一些用法,如 Incorporating Set Metadata 可以参考官方文档,或者查看 UpSetR 在 GitHub 的源码。
本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
UpSetR 高级参数使用教程的更多相关文章
- SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...
- springMVC第二天——高级参数绑定与其它特性
大纲摘要: 1.高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 2.@RequestMapping注解的使用 3.Controller方法返回值 4.Springmvc中异常处理 5 ...
- 浅谈c#的三个高级参数ref out 和Params
c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和Params,在这里我们来分别的讲解一下,在这里的我们先不 ...
- JAVAEE——SpringMVC第二天:高级参数绑定、@RequestMapping、方法返回值、异常处理、图片上传、Json交互、实现RESTful、拦截器
1. 课前回顾 https://www.cnblogs.com/xieyupeng/p/9093661.html 2. 课程计划 1.高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 ...
- C#高级参数ref的使用
ref关键字用于将方法内的变量改变后带出方法外.具体我们通过例子来说明: 例子中,将变量n1和n2交换了.如果没有加ref参数,由于没有swadDemo()方法没有返回值,调用后,n1和n2是不会交换 ...
- C#高级参数out的使用
C#中有三个高级参数,分别是out,ref,params.本文章中先来介绍out参数的使用. out,用于在方法中返回多余值.(可以理解为让一个方法返回不同的类型值) 我们通过例子来理解例子的功能:用 ...
- C#高级参数out,ref,params
在C#中通过使用方法来获取返回值时,通常只能得到一个返回值.因此,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢? out 当需要返回一系列返回值时可用out高级 ...
- (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解
http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...
- 浅谈c#的三个高级参数ref out 和Params C#中is与as的区别分析 “登陆”与“登录”有何区别 经典SQL语句大全(绝对的经典)
浅谈c#的三个高级参数ref out 和Params c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和 ...
- 四 SpringMVC与页面之间的参数传递&高级参数的绑定&日期类型的转换
参数传递: 1 原生方式:使用Servlet API , request.getParameter("id"); 2 直接将请求参数作为Controller中的形参: publ ...
随机推荐
- Java里的对象是咋回事
前言 在上一篇文章中,壹哥给大家介绍了Java中的类及其特点.创建过程等内容,相信你现在已经知道该如何创建一个Java类了.接下来在本篇文章中,壹哥会继续带大家学习面向对象中关于对象的内容.其实类和对 ...
- Java面试——JVM知识
一.什么情况下会发生栈内存溢出 [1]线程请求的栈深度大于虚拟机所允许的深度,将抛出 StackOverflowError 异常.递归的调用一个简单的方法,不断累积就会抛出 StackOverflow ...
- TOP使用参数
TOP使用参数top是检查机器当前运行状况的第一个命令,就好比是机器体检时的第一张报告单.先了解一下TOP命令的使用 [root@localhost /]# top -help top: procps ...
- [Java]Maven构建时报错: "Error:java: 读取E:\XX\XXX..jar时出错; error in opening zip file"
删除本地仓库中对应的jar包,pom.xml再reimport
- 深入理解 python 虚拟机:字节码教程(1)——原来装饰器是这样实现的
深入理解 python 虚拟机:字节码教程(1)--原来装饰器是这样实现的 在本篇文章当中主要给大家介绍在 cpython 当中一些比较常见的字节码,从根本上理解 python 程序的执行.在本文当中 ...
- JS引擎(2):Java平台上JavaScript引擎—Rhino/Nashorn概述
可以后端开发的 javascript引擎有 Chrome V8 基于C++ java的Rhino引擎(JDK6被植入),Java8 被替换为Nashorn Rhino和Nashorn都是用Java实现 ...
- 解密prompt系列5. APE+SELF=自动化指令集构建代码实现
上一章我们介绍了不同的指令微调方案, 这一章我们介绍如何降低指令数据集的人工标注成本!这样每个人都可以构建自己的专属指令集, 哈哈当然我也在造数据集进行时~ 介绍两种方案SELF Instruct和A ...
- Hydra详细使用
1. 简介 Hydra是什么 Hydra是什么: Hydra是一款网络登录破解工具,可以通过暴力破解方式来猜解用户名和密码,从而获取系统的访问权限.它可以支持多种协议,如FTP.SSH.Telnet. ...
- 在Jupyter Notebook,沉浸式体验ChatGPT
大家好,我是章北海mlpy 写代码,修Bug是 ChatGPT 目前最擅长的领域之一 今天向大家推荐一个刚刚开源的Python包 安装后可以直接在IPython和Jupyter Notebook中直接 ...
- Vue中关于keep-alive的使用
keep-alive是Vue提供的一个抽象组件,用来对组件进行缓存,从而节省性能,由于是一个抽象组件,所以在v页面渲染完毕后不会被渲染成一个DOM元素 当组件在keep-alive内被切换时组件的ac ...