2

データ テーブルの列としてロゴ/画像を含むテーブルを作成する方法を検索しました。私が欲しいテーブルの種類の画像を添付しました。データ テーブルは を使用した例から取得したものlibrary(formattable)で、探しているデザインの種類を示すために、「id」列の上にロゴを貼り付けました。理想的には、これはよりすっきりとカスタマイズ可能です (おそらく、テーブル全体の背景を黒く、白/灰色の書き込みなどで)。共有できる例はありますか?

ロゴ入りテーブル

ロゴなしで書式設定可能なテーブルを作成するコード:

df <- data.frame(
  id = 1:10,
  name = c("Bob", "Ashley", "James", "David", "Jenny", 
    "Hans", "Leo", "John", "Emily", "Lee"), 
  age = c(28, 27, 30, 28, 29, 29, 27, 27, 31, 30),
  grade = c("C", "A", "A", "C", "B", "B", "B", "A", "C", "C"),
  test1_score = c(8.9, 9.5, 9.6, 8.9, 9.1, 9.3, 9.3, 9.9, 8.5, 8.6),
  test2_score = c(9.1, 9.1, 9.2, 9.1, 8.9, 8.5, 9.2, 9.3, 9.1, 8.8),
  final_score = c(9, 9.3, 9.4, 9, 9, 8.9, 9.25, 9.6, 8.8, 8.7),
  registered = c(TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE),
  stringsAsFactors = FALSE)


formattable(df, list(
  age = color_tile("white", "orange"),
  grade = formatter("span", style = x ~ ifelse(x == "A", 
                                               style(color = "green", font.weight = "bold"), NA)),
  area(col = c(test1_score, test2_score)) ~ normalize_bar("pink", 0.2),
  final_score = formatter("span",
                          style = x ~ style(color = ifelse(rank(-x) <= 3, "green", "gray")),
                          x ~ sprintf("%.2f (rank: %02d)", x, rank(-x))),
  registered = formatter("span",
                         style = x ~ style(color = ifelse(x, "green", "red")),
                         x ~ icontext(ifelse(x, "ok", "remove"), ifelse(x, "Yes", "No")))
))
4

1 に答える 1

5

独自の列ハンドラを作成できます。例えば、

library(tidyverse)
library(formattable)

image_tile <- formatter("img",
                        src = x ~ ifelse(x == "test", "path/to/image", "path/to/image"),
                        NA)

formattable(df, list(id = image_tile))

ここに画像の説明を入力

path/to/imageさまざまな画像の場所を変更できます。または、より複雑な関数を使用することもできます (例: を使用recode)。

画像の埋め込みはややこしいようです - これは決して最良の答えではありませんが、うまくいきます。ただし、毎回画像を複製することで HTML を肥大化させます。

ローカル パスを使用して、HTML に保存できる場合があります。

library(base64enc)

image1 <- sprintf("data:image/png;base64,%s", base64encode("image-1.png"))
image2 <- sprintf("data:image/png;base64,%s", base64encode("image-2.png"))

image_tile <- formatter("img",
                        src = x ~ ifelse(x > 5, image1, image2),
                        # Control height and width, either directly - 
                        width = 50, 
                        # Or via a formula
                        height = x ~ ifelse(x > 5, 10, 50),
                        NA)

formattable(df, list(id = image_tile))

ここに画像の説明を入力

于 2016-11-29T17:04:24.663 に答える