1
0

表に自由に色を塗る_kableExtraパッケージの紹介

Last updated at Posted at 2022-01-25

Excelで表を作っていたあの頃のように、Rmarkdownで作った表にも自由に色を塗りたい...。そんな方へkableExtraパッケージのご紹介です。
 ちなみに、このパッケージは、基本的にはHTMLやLatex形式での出力向けの関数のようです。Wordにも出力できるようですが、コピー&ペーストで少々めんどくさそう。ですので、今回はHTML形式で出力する場合やRでiosスライドを作成する場合を想定しています。
 

パッケージのインストール

install.packages("kableExtra")

表の作成

 Rのirisのデータを使って作成します。

library(kableExtra)
table.1 <- iris
kableExtra::kbl(table.1) 

 これだけだとシンプルすぎて見づらいので、テーマの設定をします。様々なテーマがありますが、個人的にお勧めなテーマを今回は設定します。パイプ(%>%)を使って、設定を追加していきます。

table.1 %>%
  kableExtra::kbl() %>%
  kable_styling(
    bootstrap_options = c("striped"),
                full_width = T)

Rplot1.png

行に色を塗る

 row_spec関数を使用します。row_spec(塗りたい行, color = "文字の色",bold = TRUE/FALSE ,background = "塗りつぶす色")のように指定します。

table.1 %>%
  kableExtra::kbl() %>%
  kable_styling(
    bootstrap_options = c("striped"),
                full_width = T)%>%
  row_spec(
    1, #塗りたい行
    color = "black", #文字の色 
    bold = TRUE , #文字の太字
    background = "lightblue") #塗りつぶす色

 一行目が黒い文字の太字で、青色の背景で塗られていますね。

Rplot2.png

列に色を塗る

 列の場合は、column_spec関数です。引数の指定もrow_spec関数とほとんど一緒です。しかし、画像をセルに挿入するimageなどの面白い引数がありますので、詳しくはhelp関数で見てみてください。

table.1 %>%
  kableExtra::kbl() %>%
  kable_styling(
    bootstrap_options = c("striped"),
                full_width = T)%>%
  column_spec(
    2, 
    color = "black", 
    bold = TRUE ,
    background = "lightblue")

Rplot3.png

条件を指定して色を塗る

 条件に応じてセルの色を塗り分けたい場合があると思います。条件の指定は様々だと思いますが、今回はこちらの記事を参考に指定しました。

table.1 %>%
  kableExtra::kbl() %>%
  kable_styling(
    bootstrap_options = c("striped"),
                full_width = T) %>%
  column_spec(2, #色を塗る列を指定
              background = ifelse(table.1$Sepal.Width > 3, 
                             "lightblue", "lightgreen"))

Rplot4.png

 機能がかなり多いので今回はごく一部の機能の紹介です。ぜひこのパッケージの作成者のページ(参考資料)をご覧ください。沢山の機能が丁寧に説明されています(英語です)。

参考資料:

  1. Create Awesome HTML Table with knitr::kable and kableExtra
  2. Conditional formatting with column_spec within a dplyr chain
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0