Как создать цветные таблицы с помощью Sweave и Xtable? [закрыто]


17

Я использую Sweave и Xtable для создания отчета.

Я хотел бы добавить немного раскраски на стол. Но мне не удалось найти какой-либо способ создания цветных таблиц с помощью xtable.

Есть ли другой вариант?


что такое цветной стол? Клетки с цветным фоном? Цвет текста ячейки? В последнем сценарии решение может заключаться в переносе значений с помощью соответствующих команд tex.
mpiktas

Мне нужно, чтобы фон одного ряда был определенного цвета. Нужно ли переписывать функцию xtable?
RockScience

1
xtable уже был переписан (или, возможно, предварительно) как функция латекса в пакете R Hmisc. Лично я клянусь им за правильно выглядящие таблицы. Я не проверял, есть ли в нем место для необычного трюка с вставкой, описанного ниже, хотя я был бы удивлен, если нет.
конъюнктура

@Conjugate Вы правы, хотя это не так просто, как я бы подумал; Я обновил свой ответ вашим предложением.
ЧЛ

@chl «не просто» - это преуменьшение. Эта функция - зверь, хотя и очень способный.
конъюнктурный день

Ответы:


20

Хотя я не пробовал это явно из с R (я обычно пост-обработки таблиц в Latex непосредственно \rowcolor, \rowcolorsили colortbl пакет), я думаю , что это было бы легко сделать это, играя с add.to.rowаргументами print.xtable(). В основном ожидаются два компонента (переданные как list): (1) номер строки и (2)LATЕИкскоманда. Обратите внимание, что команда добавляется в конце указанной строки.

Вроде работает с colortblпакетом. Итак, как то так

<<result=tex>>
library(xtable)
m <- matrix(sample(1:10,10), nr=2)
print(xtable(m), add.to.row=list(list(1),"\\rowcolor[gray]{.8} "))
@

дает мне

введите описание изображения здесь

(Это настроенный шаблон Beamer, но он должен работать со стандартным документом. С Beamer вы, вероятно, захотите добавить tableопцию при загрузке пакета.)

Обновить:

Следуя совету @ Conjugate, вы также можете положиться на средства Hmisc для обработкиTЕИксвывод, увидеть множество опций latex()функции. Вот пример использования:

library(Hmisc)
## print the second row in bold (including row label)
form.mat <- matrix(c(rep("", 5), rep("bfseries", 5)), nr=2, byrow=TRUE)
w1 <- latex(m, rownamesTexCmd=c("","bfseries"), cellTexCmds=form.mat, 
            numeric.dollar=FALSE, file='/tmp/out1.tex')
w1  # call latex on /tmp/out1.tex
## highlight the second row in gray (as above)
w2 <- latex(m, rownamesTexCmd=c("","rowcolor[gray]{.8}"), 
            numeric.dollar=FALSE, file='/tmp/out2.tex')
w2
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.