想要讓柱狀圖不同高度的柱條看起來差異大一些怎么辦?你可以試試這款徑向條形圖!
我們先畫一幅普通的堆疊柱狀圖:

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。