如何在xtable markdown中更改某些单元格的颜色? [英] how do you change colors of certain cells in xtable markdown?

查看:106
本文介绍了如何在xtable markdown中更改某些单元格的颜色?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个名为j的数据框:

I have a data frame called j:

dput(j)

structure(list(Trans = c(89.8, 3337, NA, 97.55, NA, 3558.7, NA, 
4290.6, NA, 65.95, 94.55, 3495.9), `%CPU` = c(6.938, 79.853, 
1.875, 4.87, 1.46, 37.885, 1.63, 64.576, 1.165, 3.425, 5.67, 
33.856), `%Heap Used` = c(9.9, 76.95, 3.77, 9.8, 6.73, 59.23, 
3.94, 67.38, 3.73, 9.13, 9.57, 62.11), `Heap Usage/MB` = c(263.884, 
1942.246, 99.104, 257.717, 178.951, 1657.447, 99.933, 2137.134, 
96.687, 242.024, 256.302, 1646.117)), .Names = c("Trans", "%CPU", 
"%Heap Used", "Heap Usage/MB"), class = "data.frame", row.names = c(NA, 
-12L))

如果我想基于r markdown中的阈值对单元格进行颜色编码,该怎么办?

If I want to color code a cell based on threshold in r markdown, how would I do that?

例如,如果%CPU> 70,我需要将该单元格颜色编码为红色.

For example if %CPU>70, I need to color code that cell to be red.

我可以像这样在r markdown中打印它:

I can print it in r markdown like this:

print(xtable(j_cor,digits=2,row.names=FALSE,caption="JVM Usage"),caption.placement="top", tabular.environment="longtable",comment=FALSE,floating=FALSE)

但是我喜欢根据阈值r markdown在单元格中放置颜色,有什么想法吗?

But I like to place colors in the cells based on threshold r markdown Any ideas?

我尝试过类似的操作,但是pdf文件中的颜色或单元格没有更改:

I have tried something like this, but the color or the cell did not change in pdf file:

j[,2] = ifelse(j[,2] < 60, paste0("\\colorbox{red}{", j[,2], "}"), j[,2])


sessionInfo()

R version 3.2.4 (2016-03-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats4    grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] ggthemes_3.4.0    flexclust_1.3-4   modeltools_0.2-21 lattice_0.20-35   tidyr_0.6.1       jsonlite_1.4      Rcpp_0.12.10      lazyeval_0.2.0   
 [9] knitr_1.16        gridExtra_2.0.0   xtable_1.8-0      data.table_1.9.6  cowplot_0.6.2     reshape2_1.4.1    corrplot_0.77     scales_0.4.1     
[17] stringr_1.0.0     chron_2.3-47      ggplot2_2.2.1     dplyr_0.5.0       purrr_0.2.2       xml2_1.0.0        plyr_1.8.4        RCurl_1.95-4.7   
[25] bitops_1.0-6      XML_3.98-1.3      httr_1.0.0        rmarkdown_1.5    

loaded via a namespace (and not attached):
 [1] tools_3.2.4      digest_0.6.12    evaluate_0.10    tibble_1.3.0     gtable_0.2.0     DBI_0.6-1        parallel_3.2.4   yaml_2.1.14     
 [9] rprojroot_1.2    R6_2.2.1         magrittr_1.5     backports_1.1.0  htmltools_0.3.5  assertthat_0.2.0 colorspace_1.3-2 labeling_0.3    
[17] stringi_1.1.5    munsell_0.4.3 

我已将确切的文本复制到我的Rstudio并尝试运行它,但出现此错误:

I have copied the exact text to my Rstudio and tried to run it, I am getting this error:

"C:/Program Files/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS test_color.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output test_color.pdf --template "C:\R\win-library\3.2\rmarkdown\rmd\latex\default.tex" --highlight-style tango --latex-engine xelatex --variable graphics=yes --variable "geometry:margin=1in" 
! LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.1 <

pandoc.exe: Error producing PDF from TeX source
Error: pandoc document conversion failed with error 43
In addition: Warning message:
running command '"C:/Program Files/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS test_color.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output test_color.pdf --template "C:\Documents\R\win-library\3.2\rmarkdown\rmd\latex\default.tex" --highlight-style tango --latex-engine xelatex --variable graphics=yes --variable "geometry:margin=1in"' had status 43 

推荐答案

请小心列名中的%标志.您需要为文本指定清理功能,以处理LaTeX命令,并为列名称指定百分号.

Be careful with the % signs in the column names. You'll need to specify sanitizing functions for text, to deal with the LaTeX commands, and for column names to handle the percent signs.

使用\cellcolor命令为LaTeX表中的单元格着色.

Use the \cellcolor command to color a cell in LaTeX table.

这是一个示例.Rmd文件

Here is an example .Rmd file

---
title: "Colors of xtable cells"
header-includes:
   - \usepackage{longtable}
   - \usepackage[table]{xcolor}
   - \usepackage{colortbl}
output:
    pdf_document
---

Build the example data set

```{r, include = FALSE}
library(xtable)
j <-
  structure(list(Trans = c(89.8, 3337, NA, 97.55, NA, 3558.7, NA, 
  4290.6, NA, 65.95, 94.55, 3495.9), `%CPU` = c(6.938, 79.853, 
  1.875, 4.87, 1.46, 37.885, 1.63, 64.576, 1.165, 3.425, 5.67, 
  33.856), `%Heap Used` = c(9.9, 76.95, 3.77, 9.8, 6.73, 59.23, 
  3.94, 67.38, 3.73, 9.13, 9.57, 62.11), `Heap Usage/MB` = c(263.884, 
  1942.246, 99.104, 257.717, 178.951, 1657.447, 99.933, 2137.134, 
  96.687, 242.024, 256.302, 1646.117)), .Names = c("Trans", "%CPU", 
  "%Heap Used", "Heap Usage/MB"), class = "data.frame", row.names = c(NA, 
  -12L))
```

Create a version of the `data.frame` with red cells for \%CPU greater than 70.
Set the color and round to two digits.

```{r, include = FALSE}
j[, 2] <- ifelse(j[, 2] > 70, paste("\\cellcolor{red}{", round(j[, 2], 2), "}"), round(j[, 2], 2))
```

The resulting table is:

```{r results = "asis"}
print(xtable(j,
             digits = 2,
             row.names = FALSE,
             caption = "JVM Usage"),
      sanitize.text.function = identity,
      sanitize.colnames.function = NULL,
      caption.placement   = "top",
      tabular.environment = "longtable",
      comment = FALSE,
      floating=FALSE) 
```

哪个会产生以下输出:

这篇关于如何在xtable markdown中更改某些单元格的颜色?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆