在《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 高级参数使用教程的更多相关文章

  1. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

  2. springMVC第二天——高级参数绑定与其它特性

    大纲摘要: 1.高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 2.@RequestMapping注解的使用 3.Controller方法返回值 4.Springmvc中异常处理 5 ...

  3. 浅谈c#的三个高级参数ref out 和Params

    c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和Params,在这里我们来分别的讲解一下,在这里的我们先不 ...

  4. JAVAEE——SpringMVC第二天:高级参数绑定、@RequestMapping、方法返回值、异常处理、图片上传、Json交互、实现RESTful、拦截器

    1. 课前回顾 https://www.cnblogs.com/xieyupeng/p/9093661.html 2. 课程计划 1.高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 ...

  5. C#高级参数ref的使用

    ref关键字用于将方法内的变量改变后带出方法外.具体我们通过例子来说明: 例子中,将变量n1和n2交换了.如果没有加ref参数,由于没有swadDemo()方法没有返回值,调用后,n1和n2是不会交换 ...

  6. C#高级参数out的使用

    C#中有三个高级参数,分别是out,ref,params.本文章中先来介绍out参数的使用. out,用于在方法中返回多余值.(可以理解为让一个方法返回不同的类型值) 我们通过例子来理解例子的功能:用 ...

  7. C#高级参数out,ref,params

    在C#中通过使用方法来获取返回值时,通常只能得到一个返回值.因此,当一个方法需要返回多个值的时候,就需要用到ref和out,那么这两个方法区别在哪儿呢? out 当需要返回一系列返回值时可用out高级 ...

  8. (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

    http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...

  9. 浅谈c#的三个高级参数ref out 和Params C#中is与as的区别分析 “登陆”与“登录”有何区别 经典SQL语句大全(绝对的经典)

    浅谈c#的三个高级参数ref out 和Params   c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和 ...

  10. 四 SpringMVC与页面之间的参数传递&高级参数的绑定&日期类型的转换

    参数传递: 1 原生方式:使用Servlet  API  , request.getParameter("id"); 2 直接将请求参数作为Controller中的形参: publ ...

随机推荐

  1. Xenomai 再探

    一.Xenomai API 接口使用总结 Alarm-操作: 在使用实时任务过程中,采用看门狗定时器进行延时操作时,会产生实时域到非实时域的上下文切换操作,从而导致实时线程实时性受到影响,具体如下: ...

  2. 实现一个CRDT工具库——PNCounter

    PNCounter 这段代码实现了一个PNCounter,即正负计数器.PNCounter是基于GCounter实现的,GCounter是一个只增不减的计数器,而PNCounter则是在GCounte ...

  3. 最新centos7 部署 k8s v1.26,简单易懂,跟着命令敲就完事

    其实没什么好说的,搭环境搞了一整天,人已经麻了,踩了很多坑,网上教程的版本大都比较旧,总是和最新版本各种地方不兼容,把坑踩完了,k8s目前最新的版本是v1.26,跟着命令敲就行了,我已经重复部署了很多 ...

  4. it必给装机小软件附源码

    需要的包 启动之后是这个样子的 远吗如下: #authon fengimport zipfile as zfimport osimport win32apiimport win32conimport ...

  5. QtDesigner安装

    QtDesigner简单介绍 Qtdesigner是Python设计里面一个非常实用的工具,使得人们编写qt界面可以不仅仅是使用纯代码,而可以在可视化的基础上设置,非常方便. QtDesigner安装 ...

  6. [云计算]概念辨析:云计算 [IaaS/PaaS/SaaS & 公有云/私有云/混合云]

    1 云计算(Cloud Computing) 1.0 云计算的发展 1.1 概念 "云"实质上就是一个[网络], 狭义上讲,云计算就是一种提供资源的网络,使用者可以随时获取&quo ...

  7. 【Vue项目】尚品汇(四)Search组件开发

    Search模块开发 分析:1)编写静态页面 2)编写api 3)编写vuex三大件 4)组件获取仓库数据,并进行动态展示 1 SearchSelector 1 编写api export const ...

  8. 使用Python代码远程连接服务器

    目录 一.paramiko模块的介绍 二.基本使用(用户名密码登录) 三.用公钥私钥连接 一.paramiko模块的介绍 模块介绍 使用Python的第三方模块paramiko实现远程连接服务器 功能 ...

  9. Linx 阶段一

    Linux Linux常用命令 具体演示 1). ls 2). pwd 3). touch 4). mkdir 5). rm 使用技巧 1. 连按 Tab健自动补齐文件名 2. ll 查看当前目录文件 ...

  10. day02-2-商铺查询缓存

    功能02-商铺查询缓存 3.商铺详情缓存查询 3.1什么是缓存? 缓存就是数据交换的缓冲区(称作Cache),是存储数据的临时地方,一般读写性能较高. 缓存的作用: 降低后端负载 提高读写效率,降低响 ...