
R绘图 第二篇:绘制表格(ggpur)
发布日期:2021-05-09 04:54:06
浏览次数:12
分类:博客文章
本文共 3220 字,大约阅读时间需要 10 分钟。
文本表是显示数据的重要图形,一个文本表按照区域划分为:列标题,行标题,数据区,美学特征有:前景样式、背景样式、字体、网格线等。由于报表上需要呈现文本表,我想到用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 = 11, base_colour = "black", padding = unit(c(4, 4), "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 = 12, fill = "grey80", linewidth = 1, linecolor = "white", parse = FALSE, ...)rownames_style(color = "black", face = "italic", size = 12, fill = NA, linewidth = 1, linecolor = "white", parse = FALSE, ...)tbody_style(color = "black", face = "plain", size = 12, fill = c("grey95", "grey90"), linewidth = 1, 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=1, 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 = 3, column = 2, face = "bold")tab <- table_cell_bg(tab, row = 4, column = 3, linewidth = 5, fill="darkolivegreen1", color = "darkolivegreen4")tab
当需要对单个单元格进行格式的修改时,可以使用这两个函数来实现。
四,组织多个文本表
使用函数 ggarrange()把多个文本表绘制到一个画布中。
t1 <- ggtexttable()t2 <- ggtexttable()ggarrange(t1, t2, ncol = 2, nrow = 1)
参考文档:
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年03月22日 22时37分13秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
netcore中使用session
2019-03-06
远程触发Jenkins的Pipeline任务的并发问题处理
2019-03-06
【wp】HWS计划2021硬件安全冬令营线上选拔赛
2019-03-06
Ef+T4模板实现代码快速生成器
2019-03-06
Java面试题:Servlet是线程安全的吗?
2019-03-06
Linux探测工具BCC(可观测性)
2019-03-06
采坑 - 字符串的 "" 与 pd.isnull()
2019-03-06
《你当像鸟飞往你的山》总结
2019-03-06
《我是猫》总结
2019-03-06
《抗糖化书》总结
2019-03-06
mcrypt加密以及解密过程
2019-03-06
go等待N个线程完成操作总结
2019-03-06
Python 之网络式编程
2019-03-06
python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)
2019-03-06
SpringCloud微服务(03):Hystrix组件,实现服务熔断
2019-03-06
网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
2019-03-06
[网站公告]又拍云API故障造成图片无法上传(已恢复)
2019-03-06
上周热点回顾(6.9-6.15)
2019-03-06
.NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
2019-03-06
上周热点回顾(5.9-5.15)
2019-03-06