四时宝库

程序员的知识宝库

R中的数据表可视化工具——DT包(r语言画图数据可视化)

小编最近在用业余时间学习R的一个可视化工具Rshiny,在这个过程当中,接触到R中的一个数据包叫DT。在自学查资料时,发现网上对这个数据包的介绍十分有限。所以,小编在这里现学现卖,写一篇小文给大家介绍一下这个R包。鉴于小编水平有限,有任何错误和纰漏,还欢迎各位大神指正。

那好,我们就开始吧!~

有人可能会诧异,一个数据包而已嘛,用得着特别介绍吗?小编最开始也是这么想的……然而当我找到官方网页,打开这个数据包的使用方法介绍的时候,确确实实被里面纷繁复杂的各类参数给惊到了。一个R包的protocol竟然做出了堪比一个分析方法的protocol的厚重感,这让我不由得肃然起敬。

扯了这么多,这个DT包到底是干什么用的呢?DT包提供了JavaScript库DataTables在R中的一个接口,使得R对象(矩阵或者数据框)可以在HTML页面上显示为表格,并提供了对数据的筛选、分页和排序等功能。

翻译成人话就是,DT包使得JavaScript中的方法能在R中被应用,并将矩阵或者数据表在网页中可视化成表格,还能实现各种功能。小编先用R中自带的数据集iris给大家一个直观感受:

install.packages("DT") #安装DT数据包

library(DT) # 载入数据包

datatable(iris) # DT包中的核心函数datatable()

注:可视化之前可能还需要加载HTTP和WebSocket服务程序

install.packages("httpuv")

install.packages("yaml")

library(httpuv)

library(yaml)

datatable(iris)


由图可见,在没有任何多余设置的情况下,仅仅使用DT包中的datatable函数,就可以直接可视化表格数据,并且自动完成对数据的分页显示,使用户可以对每一列进行升(降)序排列,控制每页显示条目的多少,以及对数据进行检索等一系列功能。

DT包中最主要的函数就是datatable()函数,完整参数列表如下:

datatable(data, options = list(), class="display", callback = JS("return table;"), rownames, colnames, container, caption = NULL, filter = c("none","bottom", "top"), escape = TRUE, style = "default", width = NULL, height = NULL, elementId = NULL, fillContainer = getOption("DT.fillContainer", NULL), autoHideNavigation = getOption("DT.autoHideNavigation",NULL), selection = c("multiple", "single", "none"), extensions = list(), plugins = NULL, editable = FALSE)

实话说小编看见这个参数列表就已经先怂了。但是参数越多就意味着自主权越多,越能按照自己的心意设置想展现的样子,这对于可视化来说是很重要的。

所以在这篇小文里,小编先抛砖引玉,简要粗浅的讲一些我觉得比较好理解的,常用的参数,剩下的参数设置,就请感兴趣的各位自行研究啦~

1、表格编辑:

DT::datatable (head (iris) , editable = TRUE)

将参数editable更改为TRUE,即可对呈现出来的表格内容进行编辑。鼠标悬停在数据上方双击,即可改变表格内容。

2、行名显示:

默认显示行名,通过设置rownames =FALSE,来控制行名不显示。另外也可以rownames等于一组向量来为行名重新进行赋值。

3、列名设置:

默认显示列名,可以通过列名编辑来对一个或多个列名进行更改。

以上图的iris数据集为例:

datatable(head(iris),colnames = c('Here', 'Are','Some', 'New', 'Names'))

将列名修改成了如下图所示:



也可以根据列名来指定某一列进行列名改变,例如:

datatable(head(iris), colnames= c('A Better Name' ='Sepal.Width'))

将列名'Sepal.Width'修改为'A Better Name',注意,被修改的原名在赋值号后面


也可以根据位置对某一列或某几列进行指定,对其进行列名更改

datatable(head(iris),colnames = c('Another BetterName' = 2, 'Yet Another Name' = 4))

将第二列的列名更改为'Another Better Name',将第四列的列名更改为'Yet Another Name'


4、设置数据表标题

datatable( head(iris),caption ='Table 1: This is a simple caption for the table.')

caption参数设置数据表标题

简单讲了以上几个小参数,接下来我们来看datatable参数中的大boss——options参数列表。这个参数的取值是一系列小参数的list,个别小参数里还包含更次一级的参数,让人眼花缭乱。以下小编挑一些给大家介绍一下:

1)设置列宽:

默认情况下,列宽设置选项autoWidth为FALSE,代表表格自动分配宽度值,每一列的列宽度值均一。如果要人为修改某一列或者某几列的宽度值,则需要先将autoWidth设置从FALSE更改为TRUE,之后用columnDefs参数设置特定列和宽度。例如:

datatable(iris, options = list( autoWidth = TRUE, columnDefs = list(list(width = '200px', targets = c(1, 3)))))

以上代码表示将第一列与第三列的宽度设置成 ’200px’

效果如下:

原始数据表,列宽均一



第一列和第三列的列宽度改变:



2)一些初始化设置

可以通过option参数列表进行一系列初始化设置:

datatable( head ( iris,20), options = list(columnDefs = list ( list(className = 'dt-left', targets = 1)), pageLength = 5, lengthMenu = c(5, 10, 15, 20)))

上述代码的意思是显示iris数据表的前20行,第一列的对齐方式为左对齐(即:dt-left),每页显示长度为5条数据,每页显示条目长度选项列表为(5,10,15,20),效果如下:



3)排序相关,例如:

datatable(head(mtcars, 30), options= list(order = list(list(4, 'desc'), list(2, 'asc'))))

上述代码的意思为,取数据集mtcars的前30行,对第四列降序排列,若第四列数值相同,则按照第二列升序进行排列。这种设置只是控制表格的初始呈现方式,之后在页面上点击排序按钮,依旧可以改变排列顺序。



4)DOM元素:默认情况下,表格具有以下由单字母表示的DOM元素:l- length (changing inputcontrol) 长度菜单,f-(filtering input) 筛选搜索框,t- (table) 表格主体,i- (information summary) 信息摘要和p- ( pagination control) 分页控件。可以选择使用dom选项来组合想要可视化显示的子集。例如:

datatable(iris, options = list(dom = 'pt')) # 可视化只显示表格主体和分页器

datatable(iris, options = list(dom = 'lpt')) # 可视化显示表格主体、分页器和长度选择菜单

需要注意的是,表格主体默认显示,即不管dom选项里包不包含t,都显示表格。


5)选项中的回调:我们还可以在options选项中自定义回调函数(callback function)。例如,可以在选项中使用initComplete回调函数在初始化后将表头的背景颜色更改成其他颜色:

datatable(head(iris, 20), options = list(

initComplete = JS(

"function(settings, json) {",

"$(this.api().table().header()).css({'background-color':'#000080','color': '#ffff00'});",

"}")))

上述代码的意思为,将表头的背景颜色改为蓝色,列名改为黄色,所使用的颜色都是RGB颜色代码。

注:函数JS( ) 表示这个元素不是普通的字符向量,而是JavaScript代码。这个特殊的功能,使得使用者可以在R中直接编辑JavaScript函数(使用jsonlite)并在浏览器中对其解码。


对于令人头痛的options参数列表的具体应用,小编可以负责任的告诉大家,想全部掌握,那是——不可能的。粗略估计大小参数大概有几十个吧。不过大家不用过于忧虑,小编找到一个好东西:https://datatables.net/reference/option/

这个网站对datatable函数中的options参数进行了汇总,并且提供了查询功能。界面如图:


可以根据下方黑框内的功能提示,查找自己想要的参数用法。也可以在搜索框内直接输入参数,比如columnDefs列定义参数,点击搜索之后会呈现其具体用法和该参数下面所有的二级甚至三级参数设置,一目了然,十分方便。

好了,对于DT包的简单介绍就到这里了,更多使用方面的细节还请查询官方网站:https://rstudio.github.io/DT/。小编也会将自己最近在学的小工具和小方法给大家持续分享,感谢关注,我们下次见!么么哒~!

更多生信分析需求请加微信:13120220117

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接