我把数据放进了一个flextable中。当我在RStudio中查看图像时,图像是完美的。
但当我查看保存的图像时,某些单元格变为空白
我用来保存的方法是:
saving = function(ft,path){
gr <- gen_grob(ft, fit = "fixed", just = "center")
dims <- dim(gr)
png(path, width = dims$width+.1, height = dims$height+.1, units = "in", res = 250)
plot(gr)
dev.off()
}
saving(ft, save_path)
当我对webshot save_as_image(ft,path = save_path,zoom = 1 ,webshot = "webshot2")
使用默认的flextable保存方法时,文本显示出来,但最后一列被部分截断
这两个都不可用。有没有办法保存flextable对象,这样一切都会显示出来?
我的数据和代码如下:
q = structure(list(X1 = c("TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ",
"", "", "", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT"), X2 = c("", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ",
"", "", "TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "", "", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", ""), X3 = c("", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ", "", "",
"TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "", "", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
""), X4 = c("", "", "", "", "", "", "", "", "", "", "", "", " ",
"", "", "TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "", "", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", ""), X5 = c("", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ", "TEXT",
"TEXT", "TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT"), X6 = c("", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ", "", "",
"TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT"), X7 = c("", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ", "", "", "TEXT",
"", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT"
), X8 = c("", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"", "TEXT", "TEXT", "TEXT", "TEXT", " ", "", "", "TEXT", "",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "", "", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", ""),
X9 = c("", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ", "TEXT", "TEXT",
"TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT"), X10 = c("", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
" ", "", "", "TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT"), X11 = c("", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", " ", "", "", "TEXT", "", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT"),
X12 = c("", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ", "", "", "TEXT",
"", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT"), X13 = c("", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ",
"TEXT", "TEXT", "TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT"), X14 = c("", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", " ", "", "", "TEXT", "", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT"),
X15 = c("", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ", "TEXT", "",
"TEXT", "", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT"), X16 = c("", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
" ", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
""), X17 = c("", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", ""), X18 = c("",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", " ", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", ""), X19 = c("", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", " ", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", ""), X20 = c("", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", ""),
X21 = c("", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", " ", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", ""), X22 = c("",
"TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT", "TEXT",
"TEXT", "TEXT", "TEXT", " ", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "")), row.names = c(NA, 42L), class = "data.frame")
p2_col_names = c("", letters[1:2], "", letters[3:20])
ft = q %>%
flextable() %>%
merge_at(i = 14, j = 5:7) %>%
merge_at(i = 15, j = 5:7)%>%
merge_at(i = 14, j = 9:12)%>%
merge_at(i = 15, j = 9:12)%>%
#merge_at(i = 11, j = 13:14)%>%
#merge_at(i = 11, j = 13:14) %>%
fontsize(size = 7, part = "all") %>%
width(1,2) %>%
line_spacing(space = 0.5, part = "body") %>%
set_header_labels(values = list(
X1 = p2_col_names[1],
X2 = p2_col_names[2],
X3 = p2_col_names[3],
X4 = p2_col_names[4],
X5 = p2_col_names[5],
X6 = p2_col_names[6],
X7 = p2_col_names[7],
X8 = p2_col_names[8],
X9 = p2_col_names[9],
X10 = p2_col_names[10],
X11 = p2_col_names[11],
X12 = p2_col_names[12],
X13 = p2_col_names[13],
X14 = p2_col_names[14],
X15 = p2_col_names[15],
X16 = p2_col_names[16],
X17 = p2_col_names[17],
X18 = p2_col_names[18],
X19 = p2_col_names[19],
X20 = p2_col_names[20],
X21 = p2_col_names[21],
X22 = p2_col_names[22]
)) %>%
add_header_row(values = c("", "A", " ", "B", "C", "D", "E", "F"),
colwidths = c(4,3,1,4,2,3,4,1)) %>%
add_header_row(values = c("", "G","", "H", "I", "J", "K", "L"),
colwidths = c(4,3,1,4,2,3,4,1) ) %>%
# clean up and add borders
border_remove() %>%
hline(i = 12, part = "body", border = p2_header_border) %>%
hline(i = which(q$X1 == "dsf")-1, part = "body", border = p2_header_border, j = 1:15) %>%
hline(i = which(q$X1 %in% c("sdf", "dsf")),
part = "body", border = p2_header_border, j = 1:15) %>%
hline(i = which(q$X1 %in% c("few", "dsf"))-1,
part = "body", border = p2_header_border, j = 1:15) %>%
hline(i = 13, part = "body", border = p2_header_border, j = 1:15) %>%
hline(i = 3, part = "header", border = p2_header_border) %>%
hline_top( part = "header", border = p2_header_border) %>%
vline_left(part = "header", border = p2_header_border) %>%
vline(j = c(7,8,12,14,17,21,22), part = "header", border = p2_header_border) %>%
vline(j = c(7,8,12,14,17,21,22), part = "body", border = p2_header_border, i = 1:12) %>%
vline(j = c(7,8,12,14,15), part = "body", border = p2_header_border, i = 14:nrow(q)) %>%
vline_left(part = "body", i = c(1:12, 14:nrow(q)), border = p2_header_border) %>%
# grey boxes
vline(i = 3, j = c(6,7,10,11, 16, 19,20), part = "header", border = box_border) %>%
vline(i = 1:12, j = c(6,7, 10,11, 16, 19,20), part = "body", border = box_border) %>%
hline(i = 2, j = c(7,11,17,20), part = "header") %>%
hline(i = 12, j = c(7,11,17,20), part = "body") %>%
vline(i = 16:nrow(q), j = c(6,7,10,11), part = "body", border = box_border) %>%
hline(i = 15, j = c(7,11), part = "body") %>%
#bold and colour
bold(part = "header", i = 1:2) %>%
bold(j = 1, part = "body") %>%
bold(i = which(q$X1 %in% c("sdd", "rd")),
part = "body") %>%
bold(i = which(q$X1 == "rad")-2:3, part = "body") %>%
color(j = c(7,11,12,17,20), color = colormatrix) %>%
color(i = which(q$X1 %in% c("sdf", "dsf","yj")),
j = 1,
color = row_blue) %>%
width(1:22,
c(1.5, rep(7.5/21,21))) %>%
line_spacing(part = "body", space = 0.5) %>%
line_spacing(i = which(q$X1 == "tt")-1:3, part = "body", space = 1) %>%
line_spacing(i = 1:2, part = "header", space = 1) %>%
#merging
merge_at(i = 1,j = 5:7, part = "header") %>%
merge_at(i = 1,j = 9:12, part = "header") %>%
merge_at(i = 1,j = 13:14, part = "header") %>%
merge_at(i = 1,j = 15:17, part = "header") %>%
merge_at(i = 1,j = 18:21, part = "header") %>%
merge_at(i = 2,j = 5:7, part = "header") %>%
merge_at(i = 2,j = 9:12, part = "header") %>%
merge_at(i = 2,j = 13:14, part = "header") %>%
merge_at(i = 2,j = 15:17, part = "header") %>%
merge_at(i = 2,j = 18:21, part = "header") %>%
align(part = "header", i = 1:2, align = "center") %>%
align(i = which(q$X1 == "df")-2:3, part = "body", align = "center") %>%
bg(i = c(3,5,7,9, 11), bg =bg_grey , part = "body") %>%
bg(i = c(18,20,22,24, 26, 28,
31, 33, 35, 37, 39, 41), j = 1:15, bg =bg_grey , part = "body") %>%
footnote(i = 3, j = 7,
value = as_paragraph(""),
ref_symbols = "1",
part = "header", inline = TRUE) %>%
footnote(i = 16, j = 7,
value = as_paragraph(""),
ref_symbols = "1",
part = "body", inline = TRUE) %>%
footnote(i = 3, j = 11,
value = as_paragraph(""),
ref_symbols = "2",
part = "header", inline = TRUE) %>%
footnote(i = 16, j = 11,
value = as_paragraph(""),
ref_symbols = "2",
part = "body", inline = TRUE) %>%
footnote(i = 1, j = 18,
value = as_paragraph(""),
ref_symbols = "3",
part = "header", inline = TRUE) %>%
footnote(i = 3, j = 21,
value = as_paragraph(""),
ref_symbols = "4,",
part = "header", inline = TRUE) %>%
footnote(i = 16, j = 4,
value = as_paragraph(""),
ref_symbols = "5",
part = "body", inline = TRUE) %>%
footnote(i = c(29,42), j = 1,
value = as_paragraph(""),
ref_symbols = "6, ",
part = "body", inline = TRUE) %>%
footnote(i = c(29,42), j = 1,
value = as_paragraph(""),
ref_symbols = "7",
part = "body", inline = TRUE) %>%
color(part = 'footer', color = white)
1条答案
按热度按时间vwkv1x7d1#
这是一个字体问题,
png()
不知道如何上标或遇到渲染字体的问题。我建议使用支持systemfonts的图形设备:破布、玻璃粉(或石墨)。