R語(yǔ)言:highcharter包繪制可交互的高級(jí)圖表(二)

本期介紹在R語(yǔ)言如何使用highcharter包繪制可交互的高級(jí)圖表铸抑,highcharter包是R語(yǔ)言中繪制Highcharts圖表的包贡耽。Highcharts 是用純JavaScript編寫(xiě)的一個(gè)圖表庫(kù), 能夠很簡(jiǎn)單便捷的在Web網(wǎng)站或是Web應(yīng)用程序添 加有交互性的圖表鹊汛,并且免費(fèi)提供給個(gè)人學(xué)習(xí)蒲赂、個(gè)人網(wǎng)站和非商業(yè)用途使用。Highcharts詳情:www.hcharts.cn

上一期介紹了如何使用highcharter包繪制可交互的高級(jí)圖表的一部分刁憋,本期介紹高級(jí)圖表的剩余滥嘴,包括:箱線圖、瀑布圖至耻、漏斗圖若皱、桑基圖尘颓、詞云圖走触、熱力圖、帕累托圖疤苹、矩形樹(shù)圖的繪制饺汹。同樣的,請(qǐng)大家安裝highcharterdata.table包并導(dǎo)入痰催,我們開(kāi)始詳細(xì)看一下各圖表的制作細(xì)節(jié)兜辞。

箱線圖

箱線圖又名盒須圖、盒式圖或箱線圖夸溶,主要用于反映原始數(shù)據(jù)分布的特征逸吵,以及進(jìn)行多組數(shù)據(jù)分布特征的比較。在highcharter中通過(guò)函數(shù)hcboxplot或函數(shù)hc_add_series_boxplot 均可實(shí)現(xiàn)箱線圖.

函數(shù)hc_add_series_boxplot:

box_data <- data.table(type =rep(c("1","2","3", "4","5"),each = 5) ,
                       num = c(760,801,1300,895,965,733,853,939,980,1080,714,762,890,870,918,724,802,806,871,950,834,836,864,882,910))

highchart() %>%
  hc_title(text = "箱線圖",align="center")%>%
  hc_yAxis(title = list(text = "觀測(cè)值"))%>%
  hc_legend(enabled = FALSE)%>%
  hc_add_series_boxplot(x = box_data$num, by = box_data$type, name = "type",
                        #是否顯示異常值缝裁,默認(rèn)值是TRUE
                        outliers = TRUE) %>%
  hc_add_theme(hc_theme_ft())

函數(shù)hcboxplot:

###箱線圖2
hcboxplot(x = box_data$num, var =box_data$type,name = "type" ) %>%
  hc_title(text = "箱線圖",align="center")%>%
  hc_yAxis(title = list(text = "觀測(cè)值"))%>%
  hc_legend(enabled = FALSE) %>%
  hc_add_theme(hc_theme_ft())

瀑布圖

瀑布圖的實(shí)現(xiàn)扫皱,相比其他圖需要進(jìn)行較多的設(shè)置,尤其是在輸入的數(shù)據(jù)項(xiàng)上面捷绑,詳情見(jiàn)代碼內(nèi)韩脑,瀑布圖的type值為waterfall.

waterfall_data <- data.table(name = c("啟動(dòng)資金","產(chǎn)品收入","服務(wù)收入","固定成本","可變成本","匯總"),
                             y = c(120000,569000,231000,-342000,-233000,NA),
                             isSUM = c(FALSE,FALSE,FALSE,FALSE,FALSE,TRUE),
                             isIntermediateSum = c(FALSE,FALSE,FALSE,FALSE,FALSE,TRUE),
                             color = c("#008FD5","#008FD5","#008FD5","#FF2700","#FF2700","#77AB43"))

highchart() %>% 
  hc_title(text = "瀑布圖",align="center") %>%
  
  hc_xAxis(#坐標(biāo)軸類型,設(shè)置后在hcaes中設(shè)置x即可
           type = "category") %>%
  hc_yAxis(title = list(text = "USD")) %>%
  hc_legend(enabled = FALSE) %>%
  hc_plotOptions(series = list(#圖內(nèi)柱子邊界線寬粹污,設(shè)置為0段多,取消顯示邊界線
                               borderWidth = 0))%>%
  hc_tooltip(pointFormat = "<b>${point.y}</b> USD") %>%
  hc_add_series(data = waterfall_data,type = "waterfall",
                hcaes(y = y,x= name,
                      #設(shè)置自動(dòng)計(jì)算匯總項(xiàng)
                      isSUM = isSUM,isIntermediateSum =isIntermediateSum,
                      color=color))%>%
  hc_add_theme(hc_theme_538())

漏斗圖

漏斗圖能夠直觀形象的展示數(shù)據(jù)的轉(zhuǎn)化路徑,其type的值為funnel,實(shí)現(xiàn)相對(duì)比較簡(jiǎn)單壮吩。

funnel_data <- data.table(type=c("訪問(wèn)商品","加入購(gòu)物車","提交訂單","點(diǎn)擊支付","支付成功"),
                          pv = c(15654,4064,1987,976,451))
highchart() %>% 
  hc_title(text = "電商轉(zhuǎn)化漏斗") %>%
  hc_plotOptions(series = list(dataLabels = list(
                                                 format = "<b>{point.name}</b> ({point.y:,.0f})"),
                               #控制漏斗圖的長(zhǎng)寬
                               neckWidth = "25%",neckHeight = "25%"
                               ))%>%
  hc_legend(enabled = FALSE)%>%
  hc_add_series(name ="電商",type = "funnel",data = funnel_data,hcaes(x= type,y = pv))%>%
  hc_add_theme(hc_theme_elementary())

山裕基圖

杉釉担基圖展現(xiàn)的是數(shù)據(jù)的流向,有起點(diǎn)和終點(diǎn)觉啊,連接起點(diǎn)和終點(diǎn)的曲線寬度表示數(shù)值的相對(duì)大小拣宏。桑基圖制作重點(diǎn)是需要注意輸入的數(shù)據(jù)格式杠人,保證其起點(diǎn)和終點(diǎn)順序清晰明確勋乾,這決定了最終呈現(xiàn)的效果。(如執(zhí)行后圖未展示嗡善,請(qǐng)以此方式重新安裝highcharter包:devtools::install_github("jbkunst/highcharter"))

sankey_data <- data.table(from = c("巴西",    "巴西",   "巴西",   "巴西",   "加拿大",  "加拿大",  "加拿大",  "墨西哥",  "墨西哥",  "墨西哥",  "墨西哥",  "美國(guó)",   "美國(guó)",   "美國(guó)",   "美國(guó)",   "葡萄牙",  "葡萄牙",  "葡萄牙",  "葡萄牙",  "法國(guó)",   "法國(guó)",   "法國(guó)",   "法國(guó)",   "法國(guó)",   "西班牙",  "西班牙",  "西班牙",  "英國(guó)",   "英國(guó)",   "英國(guó)",   "英國(guó)",   "南非",   "南非",   "南非",   "安哥拉",  "安哥拉",  "安哥拉",  "塞內(nèi)加爾", "塞內(nèi)加爾", "塞內(nèi)加爾", "馬里",   "馬里",   "馬里",   "摩洛哥",  "摩洛哥",  "摩洛哥"),
                          to = c("葡萄牙", "法國(guó)",   "西班牙",  "英國(guó)",   "葡萄牙",  "法國(guó)",   "英國(guó)",   "葡萄牙",  "法國(guó)",   "西班牙",  "英國(guó)",   "葡萄牙",  "法國(guó)",   "西班牙",  "英國(guó)",   "安哥拉",  "塞內(nèi)加爾", "摩洛哥",  "南非",   "安哥拉",  "塞內(nèi)加爾", "馬里",   "摩洛哥",  "南非",   "塞內(nèi)加爾", "摩洛哥",  "南非",   "安哥拉",  "塞內(nèi)加爾", "摩洛哥",  "南非",   "中國(guó)",   "印度",   "日本",   "中國(guó)",   "印度",   "日本",   "中國(guó)",   "印度",   "日本",   "中國(guó)",   "印度",   "日本",   "中國(guó)",   "印度",   "日本"),
                          weight = c(5, 1,  1,  1,  1,  5,  1,  1,  1,  5,  1,  1,  1,  1,  5,  2,  1,  1,  3,  1,  3,  3,  3,  1,  1,  3,  1,  1,  1,  2,  7,  5,  1,  3,  5,  1,  3,  5,  1,  3,  5,  1,  3,  5,  1,  3))

highchart() %>%
  hc_title(text = "墒锌。基圖") %>%
  hc_add_series(data = sankey_data,type = "sankey",hcaes(from = from,to = to,weight = weight)) %>%
  hc_add_theme(hc_theme_google())

詞云圖

詞云圖用于突出顯示文本中高頻關(guān)鍵詞匯,展示文本的核心重點(diǎn)滤奈。同樣的,其實(shí)現(xiàn)也非常簡(jiǎn)單撩满。

text_data <- data.table(text =c("巴西",   "加拿大",  "墨西哥",  "美國(guó)",   "葡萄牙",  "法國(guó)",   "西班牙",  "英國(guó)",   "南非",   "安哥拉",  "塞內(nèi)加爾", "馬里",   "摩洛哥",  "中國(guó)",   "印度",   "日本"),
                        weight =c(2,    3,  1,  1,  4,  5,  4,  3,  1,  1,  2,  3,  2,  6,  1,  1))

highchart() %>%
  #hc_title(text = "詞云圖") %>%
  hc_add_series(data = text_data,type = "wordcloud",name= "得分",hcaes(name = text,weight = weight)) %>%
  hc_add_theme(hc_theme_flat())

熱力圖

熱力圖的type值為heatmap蜒程,需要特別注意的是設(shè)置顏色的漸變需通過(guò)函數(shù)hc_colorAxis,設(shè)定其參數(shù)minColormaxColor 即可。

name <- c("Alexander",  "Marie",    "Maximilian",   "Sophia",   "Lukas",    "Maria",    "Leon", "Anna", "Tim",  "Laura")
weekday <- c("Monday", "Tuesday",   "Wednesday",    "Thursday", "Friday")
heatmap_data = data.table(name =rep(name,each = length(weekday)),
                          weekday =rep(weekday,times = length(name)),
                          sales = round(runif(length(weekday) * length(name),min=20,max=100),0))

highchart() %>%
  hc_title(text = "每周銷售數(shù)據(jù)",align="center")%>%
  hc_xAxis(categories = name) %>%
  hc_yAxis(categories = weekday)%>%
  hc_colorAxis(min = 0,minColor = "#FFFFFF") %>%
  hc_legend(align = "right",layout = "vertical",margin = 0,verticalAlign = "top",y = 25,symbolHeight = 400) %>%
  hc_tooltip(formatter = JS("function () {return '<b>' + this.series.xAxis.categories[this.point.x] + '</b> sold <br><b>' +
                                    this.point.value + '</b> items on <br><b>' + this.series.yAxis.categories[this.point.y] + '</b>';}")) %>%
  hc_add_series(name = "Sales per employee",data = heatmap_data,type = "heatmap",
                hcaes(x = name,y = weekday,value = sales),
                dataLabels = list(enabled = TRUE)) %>%
  hc_add_theme(hc_theme_538())

帕累托圖

帕累托圖是將出現(xiàn)的問(wèn)題或改進(jìn)項(xiàng)目按照重要程度依次排列而采用的一種圖表伺帘,是二八法則的圖形體現(xiàn)昭躺,用于分析問(wèn)題或項(xiàng)目的核心影響因素。帕累托圖有條形圖和折線圖組合而成伪嫁,其中的折線數(shù)據(jù)需要我們?cè)谧鲌D之前自行進(jìn)行一步計(jì)算领炫。

type = c("價(jià)格過(guò)高",    "分量過(guò)小", "等待時(shí)間過(guò)長(zhǎng)",   "食物難吃", "氛圍不好", "不衛(wèi)生",  "太吵",   "服務(wù)態(tài)度不好")
num  =  c(755, 222, 151, 86, 72, 51, 36, 10)
rate = round(cumsum(num) / sum(num) *100,2)
highchart() %>%
  hc_title(text = "餐廳投訴情況",align = "center") %>%
  hc_plotOptions(series = list(#圖內(nèi)柱子邊界線寬,設(shè)置為0张咳,取消顯示邊界線
                                borderWidth = 0)) %>%
  hc_xAxis(categories = type) %>%
  hc_yAxis_multiples(
           list(
             title = list(text = ""),
             tickPositions = c(0,200,400,600,800)),
           list(
             title = list(text = ""),
             minPadding = 0,
             maxPadding = 0,
             max = 100,
             min = 0,
             opposite = TRUE,
             labels = list(format = "{value}%"),
             tickPositions = c(0,25,50,75,100)
           )
           )%>%
  hc_tooltip(pointFormat = "{series.name} {point.y:.2f} %")%>%
  hc_add_series(name = "投訴次數(shù)",type = "column",zIndex=1,data = num) %>%
  hc_add_series(type = "line",name = "累計(jì)比率",data = rate,yAxis =1,zIndex = 2) %>%
  hc_add_theme(hc_theme_economist())

矩形樹(shù)圖

矩形樹(shù)圖類似熱力圖帝洪,通過(guò)函數(shù)hc_colorAxis設(shè)置顏色隨值的變化,不同是還需在hc_add_series中設(shè)置colorValue的值才能最終實(shí)現(xiàn)顏色變化脚猾。另外矩形樹(shù)圖的type值為treemap.

tree_data <- data.table(country_name =c("巴西",   "加拿大",  "墨西哥",  "美國(guó)",   "葡萄牙",  "法國(guó)",   "西班牙",  "英國(guó)",   "南非",   "安哥拉",  "塞內(nèi)加爾", "馬里",   "摩洛哥",  "中國(guó)",   "印度",   "日本"),
                        value =c(2, 3,  1,  1,  4,5,    4,  3,  1,  1,  2,  3,  2,  6,  1,  1))

highchart() %>%
  hc_colorAxis(     maxColor = "#0043AE")%>%
  hc_title(text = "矩形樹(shù)圖")%>%
  hc_add_series(data = tree_data,type = "treemap",hcaes(name = country_name,value = value,colorValue =value),layoutAlgorithm = "squarified") %>%
  hc_add_theme(hc_theme_google())
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末葱峡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子龙助,更是在濱河造成了極大的恐慌砰奕,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件提鸟,死亡現(xiàn)場(chǎng)離奇詭異军援,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)称勋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門胸哥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人赡鲜,你說(shuō)我怎么就攤上這事烘嘱±デ荩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蝇庭,是天一觀的道長(zhǎng)醉鳖。 經(jīng)常有香客問(wèn)我,道長(zhǎng)哮内,這世上最難降的妖魔是什么盗棵? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮北发,結(jié)果婚禮上纹因,老公的妹妹穿的比我還像新娘。我一直安慰自己琳拨,他們只是感情好瞭恰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著狱庇,像睡著了一般惊畏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上密任,一...
    開(kāi)封第一講書(shū)人閱讀 51,562評(píng)論 1 305
  • 那天颜启,我揣著相機(jī)與錄音,去河邊找鬼浪讳。 笑死缰盏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的淹遵。 我是一名探鬼主播口猜,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼透揣!你這毒婦竟也來(lái)了暮的?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤淌实,失蹤者是張志新(化名)和其女友劉穎冻辩,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拆祈,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恨闪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了放坏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咙咽。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖淤年,靈堂內(nèi)的尸體忽然破棺而出钧敞,到底是詐尸還是另有隱情蜡豹,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布溉苛,位于F島的核電站镜廉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏愚战。R本人自食惡果不足惜娇唯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望寂玲。 院中可真熱鬧塔插,春花似錦、人聲如沸拓哟。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)断序。三九已至流纹,卻和暖如春颤练,著一層夾襖步出監(jiān)牢的瞬間惑灵,已是汗流浹背摹菠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留较雕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓挚币,卻偏偏與公主長(zhǎng)得像亮蒋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妆毕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355