大家快來看,這個柱狀圖會下腰!如何使用 R 語言繪制徑向柱狀圖

想要讓柱狀圖不同高度的柱條看起來差異大一些怎么辦?你可以試試這款徑向條形圖!

我們先畫一幅普通的堆疊柱狀圖:

library(tidyverse)
library(highcharter)

highchart() %>% 
  hc_chart(type = "column") %>% 
  hc_xAxis(tickInterval = 1,
           lineWidth = 0,
           categories = c('Norway', 'United States', 'Germany', 'Canada', 'Austria', 'Sweden', 'Switzerland', 'Russia', 'Netherlands', 'Finland')) %>% 
  hc_yAxis(
    lineWidth = 0,
    tickInterval = 25,
    reversedStacks = F,
    endOnTick = T,
    showLastLabel = T
  ) %>% 
  hc_plotOptions(
    column = list(
      stacking = 'normal',
      borderWidth = 0,
      pointPadding = 0,
      groupPadding = 0.15
    )
  ) %>% 
  hc_add_series(data = c(132, 105, 92, 73, 64, 57, 55, 47, 45, 43),
                name = "金牌") %>% 
  hc_add_series(data = c(125, 110, 86, 64, 81, 46, 46, 38, 44, 63),
                name = "銀牌") %>% 
  hc_add_series(data = c(111, 90, 60, 62, 87, 55, 52, 35, 41, 61),
                name = "銅牌") %>% 
  hc_title(text = '冬季奧運會金牌榜 (TOP 10)') %>% 
  hc_tooltip(outside = TRUE) %>% 
  hc_pane(size = '85%', endAngle = 270) %>% 
  hc_add_theme(hc_theme_sandsignika(
    chart = list(
      divBackgroundImage = NULL,
      style = list(background = "url(https://www.highcharts.com/samples/graphics/sand.png)", 
                   fontFamily = "Source Han Serif")
    )
  )) %>% 
  hc_credits(enabled = T,
             text = "?RStata 繪制",
             )

可以看到,這十個國家的各種獎牌的數(shù)量差距不是很大,假如我想將這種差距方法該怎么做呢?可以試試徑向柱形圖:

這個時候各個柱條看起來是不是差異巨大!

highchart() %>% 
  hc_chart(type = "column",
           inverted = TRUE,
           polar = TRUE) %>% 
  hc_xAxis(
    tickInterval =  1,
    labels = list(
      align = 'right',
      useHTML = TRUE,
      allowOverlap = TRUE,
      step = 1,
      y = 4,
      x = -4,
      style = list(
        fontSize = '12px'
      )
    ),
    lineWidth = 0,
    categories = c(
      'Norway <span class="f16"><span id="flag" class="flag no"></span></span>',
      'United States <span class="f16"><span id="flag" class="flag us"></span></span>',
      'Germany <span class="f16"><span id="flag" class="flag de"></span></span>',
      'Canada <span class="f16"><span id="flag" class="flag ca"></span></span>',
      'Austria <span class="f16"><span id="flag" class="flag at"></span></span>',
      'Sweden <span class="f16"><span id="flag" class="flag se"></span></span>',
      'Switzerland <span class="f16"><span id="flag" class="flag ch"></span></span>',
      'Russia <span class="f16"><span id="flag" class="flag ru"></span></span>',
      'Netherlands <span class="f16"><span id="flag" class="flag nl"></span></span>',
      'Finland <span class="f16"><span id="flag" class="flag fi"></span></span>'
    )
  ) %>% 
  hc_yAxis(
    lineWidth = 0,
    tickInterval = 25,
    reversedStacks = F,
    endOnTick = T,
    showLastLabel = T
  ) %>% 
  hc_plotOptions(
    column = list(
      stacking = 'normal',
      borderWidth = 0,
      pointPadding = 0,
      groupPadding = 0.15
    )
  ) %>% 
  hc_add_series(data = c(132, 105, 92, 73, 64, 57, 55, 47, 45, 43),
                name = "金牌") %>% 
  hc_add_series(data = c(125, 110, 86, 64, 81, 46, 46, 38, 44, 63),
                name = "銀牌") %>% 
  hc_add_series(data = c(111, 90, 60, 62, 87, 55, 52, 35, 41, 61),
                name = "銅牌") %>% 
  hc_title(text = '冬季奧運會金牌榜 (TOP 10)') %>% 
  hc_tooltip(outside = TRUE) %>% 
  hc_pane(size = '85%', endAngle = 270) %>% 
  hc_add_theme(hc_theme_sandsignika(
    chart = list(
      divBackgroundImage = NULL,
      style = list(background = "url(https://www.highcharts.com/samples/graphics/sand.png)", 
                   fontFamily = "Source Han Serif")
    )
  )) %>% 
  hc_exporting(enabled = T) %>% 
  hc_credits(enabled = T,
             text = "?RStata 繪制",
             ) -> hc

library(htmltools)
browsable(
  tagList(list(
    tags$head(
      tags$link(, rel = "stylesheet")
    ),
    hc
  ))
)

這里的國旗我是使用 span 標(biāo)簽添加的,需要額外加載 flags16.css 才能渲染出來國旗,所以我使用了 htmltools 包的相關(guān)函數(shù)為創(chuàng)建的 hc 綁定 flags16.css。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容