使用gt表中R中的Emo :: ji产生Country flag

问题描述

Output produced from code,still no flag

我正在尝试使用R markdown文档中的library(emo)作为gt表的一部分来获取国家/地区标志。下面是我的代码,在编织文档不确定什么地方出问题时,我看到的是国家(地区)的ASCII码而不是标志。

    library(tidyverse)
    library(gt)
    library(emo)

 
   df <-data.frame(
      stringsAsFactors = FALSE,Country = c("Health sciences","Physical sciences","Engineering","Computer science,maths","% of women inventores"),Japan = c(0.24,0.11,0.08),Chile = c(0.43,0.23,0.22,0.16,0.19),United.Kingdom = c(0.45,0.21,0.12),United.States = c(0.46,0.2,0.14),Mexico = c(0.46,0.25,0.26,0.18),Denmark = c(0.47,0.18,0.13),EU28 = c(0.48,France = c(0.48,0.24,0.17),Canada = c(0.49,Australia = c(0.5,Brazil = c(0.57,0.33,0.32,Portugal = c(0.57,0.37,0.36,0.27,0.26)
         )

生成gt表的代码仍未在输出标记

df %>% 
  gt() %>% 
   cols_label(Country="Department",Japan=paste0("Japan",emo::ji("jp")),Chile=paste0(emo::ji("chile")),United.Kingdom=paste0(emo::ji("uk")),United.States=paste0(emo::ji("us")),Mexico=paste0(emo::ji("mexico")),Denmark=paste0(emo::ji("denmark")),EU28=paste0(emo::ji("eu")),France=paste0(emo::ji("france")),Canada=paste0(emo::ji("canada")),Australia=paste0(emo::ji("australia")),Brazil=paste0(emo::ji("brazil")),Portugal=paste0(emo::ji("portugal")))

解决方法

也许有点矫kill过正,但行得通!

您可以在html col标签中使用URI编码的图像。为此,您需要为需要显示的每个国家/地区设置png图标。在这里,我以他们的缩写名称命名

library(base64enc)

flagAsIMG <- function(country_code) {
  img <- paste0("data:image/png;base64,",base64encode(paste0(country_code,".png")))
  paste0("<img src='",img,"'/>")
}

library(gt)
library(magrittr)

gt(data.frame(japan=1)) %>%
  cols_label(japan=html("Japan",flagAsIMG("jp"))