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 有想加入开源项目开发的童 ...
随机推荐
- Cocos2D创建多彩文本显示标签
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) Cocos2D中默认的CCLableTTF类从源代码里看是支持 ...
- (八十八)VFL语言初步 - 实现布局
[基本语法] VFL的语法为H:和V:开头,代表水平和垂直. 接下来如果要涉及距离,使用|-x-,x为距离的点数. 对于视图,用[ ]包围,例如[blueView]. ①下面的语句实现了blueVie ...
- Android support library支持包常用控件介绍(二)
谷歌官方推出Material Design 设计理念已经有段时间了,为支持更方便的实现 Material Design设计效果,官方给出了Android support design library ...
- python 内存数据库与远程服务
python 内存数据库与远程服务 需要import的python 内存数据库代码参考下面的链接: http://blog.csdn.net/ubuntu64fan/article/details/5 ...
- 利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl
利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl 首先mingw的环境搭建,务必遵循下文: http://blog.csdn.net/ubuntu64fan/ar ...
- 【翻译】Ext JS最新技巧——2015-10-21
原文:Top Support Tips Kevin Cassidy:全宽度的字段错误信息 有考虑过让验证信息显示在表单字段的下面(msgTarget:'under'),但最后发现验证信息被压缩显示了吗 ...
- MinerUrl.java 解析页面后存储URL类
MinerUrl.java 解析页面后存储URL类 package com.iteye.injavawetrust.miner; /** * 解析页面后存储URL类 * @author InJavaW ...
- Linux--缺页中断和交换技术
1.请求调页中断:进程线性地址空间里的页面不必常驻内存,例如进程的分配请求被理解满足,空间仅仅保留vm_area_struct的空间,页面可能被交换到后援存储器,或者写一个只读页面(COW).Linu ...
- 03_Android NDK中C语言调用Java代码,javah的使用,javap的使用以及生成签名,Android.mk的编写,C代码的编写
1 案例场景,通过C语言回调Java的代码,案例的最终界面: 2 案例的代码结构如下: 3 编写DataProvider的代码: package com.example.ndkcallbac ...
- LIRe提供的图像检索算法的速度
本文翻译了LIRe的作者Mathias Lux发表的论文<LIRe: Lucene Image Retrieval - An Extensible Java CBIR Library>.主 ...