R实战 第七篇:绘图文本表
文本表是显示数据的重要图形,一个文本表按照区域划分为:列标题,行标题,数据区,美学特征有:前景样式、背景样式、字体、网格线等。由于报表上需要呈现文本表,我想到用R,R的绘图功能很强大,我本来以为绘制文本表应该是一件非常简单的事。可是,在搜索Google之后,我发现使用GridExtra绘制一个文本表是如此的困难,那些奇怪的参数和函数,让人抓狂,实在没有耐心看下去。
好在,我找到一个简单的绘制文本表的包,ggpubr包,使用ggtexttable绘制文本表,用法非常简单,推荐:
install.packages("ggpubr")
library(ggpubr)
但是,该包的功能不是很完善,例如,无法设置列的长度,这是比较坑爹的地方,用户只能通过填充单元格的方式来控制文本表的宽度。
一,绘制文本表的函数
使用ggpubr包绘制一个文本表,常会用到7个基本函数:
- ggtexttable():用于绘制文本表,并返回ggtexttable类型的对象;
- ttheme():用于设置表的样式,包含colnames、style,rownames.style和tbody.style;
- rownames_style(), colnames_style(), tbody_style():用于设置列标题,行标题和数据区的样式;
- table_cell_font():用于设置单元格中的文本(size,face),对某一个特定的单元格进行格式的设置;
- table_cell_bg():用于设置单元格的背景色(fill,color,linewidth),对某一个特定的单元格进行格式的设置。
这7个基本函数的定义是:
ggtexttable(x, rows = rownames(x), cols = colnames(x), vp = NULL, theme = ttheme(), ...) ttheme(base_style = "default", base_size = , base_colour = "black", padding = unit(c(, ), "mm"),
colnames.style = colnames_style(size = base_size),
rownames.style = rownames_style(size = base_size),
tbody.style = tbody_style(size = base_size)) colnames_style(color = "black", face = "bold", size = ,
fill = "grey80", linewidth = , linecolor = "white", parse = FALSE, ...) rownames_style(color = "black", face = "italic", size = , fill = NA,
linewidth = , linecolor = "white", parse = FALSE, ...) tbody_style(color = "black", face = "plain", size = ,
fill = c("grey95", "grey90"), linewidth = , linecolor = "white", parse = FALSE, ...) table_cell_font(tab, row, column, face = NULL, size = NULL) table_cell_bg(tab, row, column, fill = NULL, color = NULL, linewidth = NULL)
参数注释:
- vp:可选的视口(viewport),viewport是一个矩形的绘图区域。
- parse:设置为TRUE时,表示使用文字表示符号
- ...:额外的参数,用于设置文本对齐,例如:hjust 和 x,其中,hjust = 1 靠右,= 0 靠左,x是比例,x=0.5 表示居中
- fill:填充的背景色,当填充数据区时,如果该参数是含有多个颜色的向量,那么R循环使用向量中颜色来填充表格的背景。
- face:字体的效果,有效值是 c("plain", "bold", "italic", "bold.italic")
- tab:ggtexttable类型的对象
- base_style:系统自定义的基础样式,
c("default", "blank", "classic", "minimal", "light", "lBlack", "lBlue", "lRed", "lGreen", "lViolet", "lCyan", "lOrange", "lBlackWhite", "lBlueWhite", "lRedWhite", "lGreenWhite", "lVioletWhite", "lCyanWhite", "lOrangeWhite", "mBlack", "mBlue", "mRed", "mGreen", "mViolet", "mCyan", "mOrange", "mBlackWhite", "mBlueWhite", "mRedWhite", "mGreenWhite", "mVioletWhite", "mCyanWhite", "mOrangeWhite" ). 注意, l = "light"; m = "medium"。 - base_size,base_colour:默认的字体大小和颜色
- padding:是两个元素的向量,指定每个单元格内的文本的水平和垂直填充
二,绘制基本的文本表
把rows参数设置为NULL,表示移除行名称;使用theme参数自定义表格显示的样式,hjust=1,x=0.9,表示单元格的文本靠右,间距为0.9。
df <- head(iris)
tbody.style = tbody_style(color = "black",
fill = c("#e8f3de", "#d3e8bb"), hjust=, x=0.9)
ggtexttable(head(iris), rows = NULL,
theme = ttheme(
colnames.style = colnames_style(color = "white", fill = "#8cc257"),
tbody.style = tbody.style
)
)

三,设置文本表的单元格
使用变量保存文本表的对象,然后对文本表的单元格进行修改:
tab <- ggtexttable(head(iris), rows = NULL, theme = ttheme("classic"))
tab <- table_cell_font(tab, row = , column = , face = "bold")
tab <- table_cell_bg(tab, row = , column = , linewidth = , fill="darkolivegreen1", color = "darkolivegreen4")
tab
当需要对单个单元格进行格式的修改时,可以使用这两个函数来实现。
四,组织多个文本表
使用函数 ggarrange()把多个文本表绘制到一个画布中。
t1 <- ggtexttable()
t2 <- ggtexttable()
ggarrange(t1, t2, ncol = , nrow = )
参考文档:
R实战 第七篇:绘图文本表的更多相关文章
- R实战 第七篇:网格(grid)
grid包是R底层的图形系统,可以绘制几乎所有的图形.除了绘制图形之外,grid包还能对图形进行布局.在绘图时,有时候会遇到这样一种情景,客户想把多个代表不同KPI的图形分布到同一个画布(Page)上 ...
- R实战 第三篇:数据处理(基础)
数据结构用于存储数据,不同的数据结构对应不同的操作方法,对应不同的分析目的,应选择合适的数据结构.在处理数据时,为了便于检查数据对象,可以通过函数attributes(x)来查看数据对象的属性,str ...
- R实战 第五篇:绘图(ggplot2)
ggplot2包实现了基于语法的.连贯一致的创建图形的系统,由于ggplot2是基于语法创建图形的,这意味着,它由多个小组件构成,通过底层组件可以构造前所未有的图形.ggplot2可以把绘图拆分成多个 ...
- R实战 第十一篇:处理缺失值
在真实的世界中,缺失数据是经常出现的,并可能对分析的结果造成影响.在R中,经常使用VIM(Visualization and Imputation of Missing values)包来对缺失值进行 ...
- R实战 第三篇:数据处理
在实际分析数据之前,必须对数据进行清理和转化,使数据符合相应的格式,提高数据的质量.数据处理通常包括增加新的变量.处理缺失值.类型转换.数据排序.数据集的合并和获取子集等. 一,增加新的变量 通常需要 ...
- R实战 第八篇:重塑数据(reshape2)
数据重塑通常使用reshape2包,reshape2包用于实现对宽数据及长数据之间的相互转换,由于reshape2包不在R的默认安装包列表中,在第一次使用之前,需要安装和引用: install.pac ...
- R实战 第六篇:数据变换(aggregate+dplyr)
数据分析的工作,80%的时间耗费在处理数据上,而数据处理的主要过程可以分为:分离-操作-结合(Split-Apply-Combine),也就是说,首先,把数据根据特定的字段分组,每个分组都是独立的:然 ...
- R实战 第十篇:列联表和频数表
列联表是观测数据按两个或更多属性(定性变量)分类时所列出的频数分布表,它是由两个以上的变量进行交叉分类的频数分布表.交互分类的目的是将两变量分组,然后比较各组的分布状况,以寻找变量间的关系. 按两个变 ...
- Spring Cloud实战 | 第十篇 :Spring Cloud + Seata 1.4.1 + Nacos1.4.0 整合实现微服务架构中逃不掉的话题分布式事务
Seata分布式事务在线体验地址:https://www.youlai.store 本篇完整源码地址:https://github.com/hxrui/youlai-mall 有想加入开源项目开发的童 ...
随机推荐
- iPhone全部设备分辨率速查
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...
- Android使用局和数据实现天气项目-android学习之旅(十二)
1.首先注册聚合数据账号,下载相应的sdk 2.导入jar包和 so文件 配置Application,初始化sdk <application //自己新建的application类 androi ...
- android横竖屏切换activity生命周期变化
1.新建一个Activity,并把各个生命周期打印出来 2.运行Activity,得到如下信息 onCreate--> onStart--> onResume--> 3.按crtl+ ...
- 【Unity Shaders】使用Unity Render Textures实现画面特效——建立画面特效脚本系统
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- HMAC
Hash-based Message Authentication Code HMAC是IP安全里必须实现的MAC方案,并且其他Internet协议中(如SSL)也使用了HMAC.HMAC已作为NIS ...
- Android开发技巧——ViewPager衍生出来的2个类
1.不能左右滑动的ViewPager /* * Date: 14-7-28 * Project: Access-Control-V2 */ package cn.irains.access.v2.co ...
- 读书笔记 - reword (重来)
reword (重来) 虽然我是一个不是很喜欢看书的人,但是公认的是看书对提高个人的水平是很有帮助的. 而且我想,如果我要写一本书,我一定会经过多次校验.经过长时间思考确保无误后才会出版的.所以我想看 ...
- Java 8时间和日期API 20例
本文由 ImportNew - Sandy 翻译自 javarevisited.欢迎加入翻译小组.转载请见文末要求. 伴随lambda表达式.streams以及一系列小优化,Java 8 推出了全新的 ...
- platform_driver_probe与platform_driver_register的区别
Platform Device and Drivers 从<linux/platform_device.h>我们可以了解Platform bus上面的驱动模型接口:platform_de ...
- OSB开发常用资料
成功搭建OSB环境并运行HelloWorld项目 http://www.beansoft.biz/?p=2066 Oracle Service Bus 11gR1开发环境安装文档 http://www ...