UpSet|多集合韦恩图 看不太清楚咋整?用upSet吧!

简介: UpSet|多集合韦恩图 看不太清楚咋整?用upSet吧!


介绍一个R包UpSetR,专门用来集合可视化,当多集合的韦恩图不容易看的时候,就是它大展身手的时候了。


一 载入R包 数据


#安装及加载R包
#install.packages("UpSetR")
library(UpSetR) 
#载入数据集
data <- read.csv("upSet.csv",header=TRUE)
#先大致浏览一下该数据集,数据集太长,就只看前几列
head(data,6)

二 upSet集合可视化


使用UpsetR包里面的upset()函数绘制集合可视化图形。


1. 基本参数


upset(data, 
      sets = c("Action", "Adventure", "Comedy", "Drama", "Fantasy" , "Children","Crime"),#查看特定的几个集合 
      mb.ratio = c(0.55, 0.45),#控制上方条形图以及下方点图的比例 
      order.by = "freq", #如何排序,这里freq表示从大到小排序展示 
      keep.order = TRUE, #keep.order按照sets参数的顺序排序 
      number.angles = 30, #调整柱形图上数字角度 
      point.size = 2, line.size = 1, #点和线的大小 
      mainbar.y.label = "Genre Intersections", sets.x.label = "Movies Per Genre", #坐标轴名称 
      text.scale = c(1.3, 1.3, 1, 1, 1.5, 1)) #六个数字,分别控制c(intersection size title, intersection size tick labels, set size title, set size tick labels, set names, numbers above bars)

2. queries参数

queries参数分为四个部分:query, param, color, active;

query: 指定哪个query,UpSetR有内置,也可以自定义;

param: list, query作用于哪个交集

color:每个query都是一个list,里面可以设置颜色,没设置的话将调用包里默认的调色板;

active:被指定的条形图:TRUE显示颜色,FALSE在条形图顶端显示三角形;

upset(data, main.bar.color = "black",
     queries = list(list(query = intersects,   #UpSetR 内置的intersects query
                         params = list("Drama"), ##指定作用的交集
                         color = "red", ##设置颜色,未设置会调用默认调色板
                         active = F,   # TRUE:条形图被颜色覆盖,FALSE:条形图顶端显示三角形
                         query.name = "Drama"), # 添加query图例
                    list(query = intersects,  params = list("Action", "Drama"),
                         active =T,
                         query.name = "Emotional action"),
                    list(query = intersects,  params = list("Drama", "Comedy","Action"),
                         color = "orange", active = T)),
     query.legend = "top")

可以看到 list("Drama") ,list("Action", "Drama") 和 list("Drama", "Comedy", "Action") 均根据 color 设置 显示了不同的颜色。

3. attribute.plots参数

添加属性图,内置有柱形图、散点图、热图等


3.1 添加柱形图和散点图

upset(data, main.bar.color = "black",
     queries = list(list(query = intersects, params = list("Drama"), color = "red",
                         active = F,  query.name = "Drama"),
                    list(query = intersects,  params = list("Action", "Drama"),
                         active =T,query.name = "Emotional action"),
                    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), #T 则显示出上面queries定义的颜色
                                list(plot = histogram, x = "ReleaseDate", queries = F)),
                            ncols = 2), # 添加的图分两列
     query.legend = "top") #query图例在最上方

3.2 添加箱线图

每次最多添加两个箱线图

upset(data, boxplot.summary = c("AvgRating", "ReleaseDate"))

相关文章
|
3月前
|
算法 Java
【Java集合类面试十八】、ConcurrentHashMap是怎么分段分组的?
ConcurrentHashMap通过分段锁(Segment)实现高效并发访问,get操作无需加锁,而put操作首先判断是否需要扩容,然后通过两次hash定位并尝试使用CAS和锁机制安全地添加元素。
|
存储 安全 算法
《我要进大厂》- Java集合夺命连环13问,你能坚持到第几问?(Map | Collections)
《我要进大厂》- Java集合夺命连环13问,你能坚持到第几问?(Map | Collections)
《我要进大厂》- Java集合夺命连环13问,你能坚持到第几问?(Map | Collections)
|
算法
数据结构上机实践第三周项目3- 求集合并集
数据结构上机实践第三周项目3- 求集合并集
105 0
数据结构上机实践第三周项目3- 求集合并集
|
存储 安全 算法
《我要进大厂》- Java集合夺命连环14问,你能坚持到第几问?(集合概述 | List | Set | Queue)
《我要进大厂》- Java集合夺命连环14问,你能坚持到第几问?(集合概述 | List | Set | Queue)
《我要进大厂》- Java集合夺命连环14问,你能坚持到第几问?(集合概述 | List | Set | Queue)
|
Kubernetes Cloud Native Linux
人手一套的K8S命令集合,它来了!
K8S在容器技术盛行的时代已经称为标配技术,本文瑞哥开始给大家介绍了K8S的基本知识,然后列举了K8S的命令列表,最后还给大家提炼出高频使用的命令,希望本文能够给您带来帮助。
330 0
人手一套的K8S命令集合,它来了!
|
算法 C++
数据结构-第三章-循环顺序队-增设标记法实现各种基本功能
数据结构-第三章-循环顺序队-增设标记法实现各种基本功能
848 0
|
Java Apache
集合的特别要注意地方哈
《系统设计》系列
78 0
|
机器学习/深度学习 定位技术
【数据结构】二维数组无用的位置太多?这一招轻松解决
【数据结构】二维数组无用的位置太多?这一招轻松解决
【数据结构】二维数组无用的位置太多?这一招轻松解决
|
容器
面试官提问:如何去掉list集合中重复的元素?(上)
在实际开发的时候,我们经常会碰到这么一个困难:一个集合容器里面有很多重复的对象,里面的对象没有主键,但是根据业务的需求,实际上我们需要根据条件筛选出没有重复的对象。 比较暴力的方法,就是根据业务需求,通过两层循环来进行判断,没有重复的元素就加入到新集合中,新集合中已经有的元素就跳过。