Skip to contents

Change text color of selected rows and columns of a flextable. A function can be used instead of fixed colors.

When color is a function, it is possible to color cells based on values located in other columns, using hidden columns (those not used by argument colkeys) is a common use case. The argument source has to be used to define what are the columns to be used for the color definition and the argument j has to be used to define where to apply the colors and only accept values from colkeys.

Usage

color(x, i = NULL, j = NULL, color, part = "body", source = j)

Arguments

x

a flextable object

i

rows selection

j

columns selection

color

color to use as font color. If a function, function need to return a character vector of colors.

part

partname of the table (one of 'all', 'body', 'header', 'footer')

source

if color is a function, source is specifying the dataset column to be used as argument to color. This is only useful if j is colored with values contained in other columns.

See also

Other sugar functions for table style: align(), bg(), bold(), empty_blanks(), font(), fontsize(), highlight(), italic(), keep_with_next(), line_spacing(), padding(), rotate(), tab_settings(), valign()

Examples

ft <- flextable(head(mtcars))
ft <- color(ft, color = "orange", part = "header")
ft <- color(ft,
  color = "red",
  i = ~ qsec < 18 & vs < 1
)
ft

mpg

cyl

disp

hp

drat

wt

qsec

vs

am

gear

carb

21.0

6

160

110

3.90

2.620

16.46

0

1

4

4

21.0

6

160

110

3.90

2.875

17.02

0

1

4

4

22.8

4

108

93

3.85

2.320

18.61

1

1

4

1

21.4

6

258

110

3.08

3.215

19.44

1

0

3

1

18.7

8

360

175

3.15

3.440

17.02

0

0

3

2

18.1

6

225

105

2.76

3.460

20.22

1

0

3

1

if (require("scales")) { scale <- scales::col_numeric(domain = c(-1, 1), palette = "RdBu") x <- as.data.frame(cor(iris[-5])) x <- cbind( data.frame( colname = colnames(x), stringsAsFactors = FALSE ), x ) ft_2 <- flextable(x) ft_2 <- color(ft_2, j = x$colname, color = scale) ft_2 <- set_formatter_type(ft_2) ft_2 } #> Warning: Use `colformat_*()` instead.

colname

Sepal.Length

Sepal.Width

Petal.Length

Petal.Width

Sepal.Length

1.0

-0.1

0.9

0.8

Sepal.Width

-0.1

1.0

-0.4

-0.4

Petal.Length

0.9

-0.4

1.0

1.0

Petal.Width

0.8

-0.4

1.0

1.0