简体   繁体   English

使用 R 在 Highcharter 中添加标志

[英]Adding Flags in Highcharter using R

在此处输入图像描述

I am trying to replicate the above graph using the highcharter library in R.我正在尝试使用 R 中的 highcharter 库复制上图。 I am using this as API - reference [https://codepen.io/pen/]我将其用作 API - 参考 [https://codepen.io/pen/]

Here is the dput() of my data这是我的数据的 dput()

dput(country_totals2)
structure(list(country_name = c("Norway", 
"United States", "Germany", "Canada", "Austria"), level = c("Total", 
"Total", "Total", "Total", "Total"), `Total net production` = c(69212.347, 
81967.627, 571799.713, 551685.823, 280234), Imports = c(21635.908, 
11573.411, 31701.359, 12826.095, 47179), Exports = c(4308.347, 
25480.503, 80187.327, 76094.985, 3270), `Energy absorbed by pumping` = c(1347.901, 
1372.884, 8347.706, 7331.317, 2233), `Energy supplied` = c(85192.007, 
66687.651, 514966.039, 481085.616, 321910)), row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame"))

Below is my R code -下面是我的 R 代码 -

highchart() %>% 
  hc_chart(type = "column",
           inverted = TRUE,
           polar = TRUE) %>% 
  hc_plotOptions(column = list(stacking = "normal")) %>% 
  hc_xAxis(categories= list('Norway <span class="f16"><span id="flag" class="flag no">' ,
           'United States <span class="f16"><span id="flag" class="flag us">' ,
           'Germany <span class="f16"><span id="flag" class="flag de">' ,
           'Canada <span class="f16"><span id="flag" class="flag ca">' ,
           'Austria <span class="f16"><span id="flag" class="flag at">' ,
             '</span></span>')) %>% 
  hc_yAxis( tickLength = 0,
            gridLineColor = 'transparent'
  ) %>% 
  hc_xAxis( tickLength = 0,
            gridLineColor = 'transparent'
  )%>% 
  hc_add_series( data = country_totals2$Imports) %>% 
  hc_add_series( data = country_totals2$Exports) %>% 
  hc_add_series(data = country_totals2$`Energy absorbed by pumping`) %>% 
  hc_add_theme(hc_theme_ffx())

The code is working fine except the country flags as indicated in the ' hc_xAxis ' commands isnt appearing.该代码工作正常,但未出现“ hc_xAxis ”命令中指示的国家/地区标志。

How should I modify the JS/HTML code in the hc_xAxis command for the flags to appear in R?我应该如何修改hc_xAxis命令中的 JS/HTML 代码以使标志出现在 R 中?

The original polar bar chart is available here .原始极坐标图可在此处获得。
Digging into the code, one can find the following lines concerning the flag service:深入研究代码,可以找到有关标志服务的以下几行:

<!-- Flag sprites service provided by Martijn Lafeber,
    https://github.com/lafeber/world-flags-sprite/blob/master/LICENSE -->
<link rel="stylesheet" href="https://github.com/downloads/lafeber/world-flags-sprite/flags16.css" />

which need to be prepended to the highchart plot using htmlwidgets::prependContent .需要使用htmlwidgets::prependContent将其添加到 highchart plot 前面。

library(highcharter)
library(purrr)
library(htmlwidgets)
library(htmltools)

country_totals2 <- structure(list(country_name = c("Norway", 
"United States", "Germany", "Canada", "Austria"), level = c("Total", 
"Total", "Total", "Total", "Total"), `Total net production` = c(69212.347, 
81967.627, 571799.713, 551685.823, 280234), Imports = c(21635.908, 
11573.411, 31701.359, 12826.095, 47179), Exports = c(4308.347, 
25480.503, 80187.327, 76094.985, 3270), `Energy absorbed by pumping` = c(1347.901, 
1372.884, 8347.706, 7331.317, 2233), `Energy supplied` = c(85192.007, 
66687.651, 514966.039, 481085.616, 321910)), row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame"))

p <- highchart() %>% 
  hc_chart(type = "column",
           inverted = TRUE,
           polar = TRUE) %>% 
  hc_plotOptions(column = list(stacking = "normal")) %>% 
  hc_xAxis(categories= c("Norway","United States","Germany","Canada","Austria"),
           labels=list(useHTML=TRUE,
           formatter = JS("function() { 
           return {
                'Norway': 'Normay &nbsp;<span class=\x22 f16\x22><span class=\x22 flag no \x22></span></span>&nbsp;&nbsp;',
                'United States': 'United States &nbsp;<span class=\x22 f16\x22><span  class=\x22 flag us \x22></span ></span>&nbsp;&nbsp;&nbsp;',
                'Germany': 'Germany &nbsp;<span class=\x22 f16\x22><span  class=\x22 flag de \x22></span ></span>&nbsp;&nbsp;',
                'Canada': 'Canada &nbsp;<span class=\x22 f16\x22><span  class=\x22 flag ca \x22></span ></span>&nbsp;&nbsp;',
                'Austria': 'Austria<span class=\x22 f16\x22><span  class=\x22 flag at\x22></span ></span>&nbsp;&nbsp;'
            }[this.value]; 
           }")

           )
           ) %>% 
  hc_yAxis( tickLength = 0,
            gridLineColor = 'transparent'
  ) %>% 
  hc_xAxis( tickLength = 0,
            gridLineColor = 'transparent'
  )%>% 
  hc_add_series( data = country_totals2$Imports) %>% 
  hc_add_series( data = country_totals2$Exports) %>% 
  hc_add_series(data = country_totals2$`Energy absorbed by pumping`) %>% 
  hc_add_theme(hc_theme_ffx())

prependContent(p, HTML('<link rel="stylesheet" href="https://github.com/downloads/lafeber/world-flags-sprite/flags16.css" />'))

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM