我希望将R中的表保存为图像,其中包括列名中的数学表达式和kableExtra中spec_hist()
函数中的内联直方图。理想情况下,我希望将表格式化为Latex表,但HTML也会这样做。
我遇到的问题是,当我尝试保存一个可使用的表时,数学表达式没有得到正确的解释,但是内联直方图显示得很好。
同时,如果我试图保存一个可使用的Latex表,数学表达式将被正确地解释,但是直方图将不会出现。
这可能是一个bug (两个bug)吗?在kableExtra?还是我漏掉了什么?
注意,在R/R中,可使用的HTML表看起来非常好(数学表达式和内联图)。但是我想保存这个图像的重用。然而,可使用的Latex表从不显示内联直方图,无论是显示在R中还是保存到文件中。
下面是一个可重复的例子:
library(knitr)
library(kableExtra)
df <- mtcars[1:6,] %>%
mutate(`$\\theta_{boot}$` = "") %>% # add an empty column where the in-line histograms will go
rename(`$mpg$` = mpg, # rename some columns to math expressions
`$\\bar{cyl}$` = cyl,
`$\\bar{disp}$` = disp,
`$hp$` = hp,
`$drat$` = drat)
# create dummy data for the in-line histograms
hist_dat <- list(runif(20), runif(20), runif(20), runif(20), runif(20), runif(20))
# Make HTML Table
kbl(df, escape = FALSE, booktabs = T, format = "html") %>%
add_header_above(c("Some Header" = 6, "Some Other Header" = 7)) %>% # add header
kable_styling(latex_options = c("repeat_header"), font_size = 12) %>%
column_spec(12, image = spec_hist(hist_dat)) %>% # add in-line hist
pack_rows("Group 1", 1, 3) %>%
pack_rows("Group 2", 4, 6) %>%
kable_paper() %>%
as_image(file = 'temp.png')
#save_kable(file = 'temp.png')
上面的内容保存了这个图像:
柱状图在那里,但是列名被打印为文字而不是解释的数学表达式。
现在是Latex版本:
# Make Latex Table
kbl(df, escape = FALSE, booktabs = T, format = "latex") %>%
add_header_above(c("Some Header" = 6, "Some Other Header" = 7)) %>%
kable_styling(latex_options = c("repeat_header"), font_size = 12) %>%
column_spec(12, image = spec_hist(hist_dat)) %>%
pack_rows("Group 1", 1, 3) %>%
pack_rows("Group 2", 4, 6) %>%
kable_paper(full_width = TRUE) %>%
as_image(file = 'temp_latex.png')
#save_kable(file = 'temp.png')
使用format = "latex“和full_width = TRUE生成以下文件:
现在正确地解释了列名,但没有绘制直方图。
我还发现,无论我是使用as_image()
还是save_kable()
来保存图像,都没有区别。
有什么想法吗?
谢谢!
编辑:硬件说明:我在Mac上安装了LaTeX。图形工作正常,尽管所有涉及latex的调用在我的Windows机器上都失败了(相同的代码、MikTeX、Ghostscript和Magick安装)。
> R.version
_
platform x86_64-apple-darwin17.0
arch x86_64
os darwin17.0
system x86_64, darwin17.0
status
major 4
minor 1.0
year 2021
month 05
day 18
svn rev 80317
language R
version.string R version 4.1.0 (2021-05-18)
nickname Camp Pontanezen
发布于 2021-12-02 10:39:02
如果您编织rmarkdown文档,则生成两个pdf文档(包含在文档中的图像),并将图像单独保存为一个文件。
似乎需要调整列规范以考虑行名。
添加列宽有助于管理页上的表。
```{r, results='asis'}
图书馆(针织品)
图书馆(KableExtra)
图书馆(Dplyr)
kable(df,
format = "latex",
escape = FALSE,
booktabs = TRUE) %>%
Add_header_above(c(“一些标题”= 6,“一些其他标题”= 7)) %>%
kable_styling(font_size = 8,full_width = TRUE) %>%
column_spec(1,宽度=“30毫米”) %>%
column_spec(2:12,宽度= "6mm") %>%
column_spec(13,image = spec_hist(hist_dat,col =“红色”)) %>%
Pack_rows(“1组”,1,3) %>%
Pack_rows(“2组”,4,6) %>%
as_image(file = 'temp/as-image.png')
as_image(file = 'temp/ as -image.pdf') #也适用于pdf
https://stackoverflow.com/questions/70193057
复制相似问题