R語言:highcharter包繪制可交互的基礎(chǔ)圖表


Highcharts 是一個用純JavaScript編寫的一個圖表庫笼吟, 能夠很簡單便捷的在Web網(wǎng)站或是Web應(yīng)用程序添 加有交互性的圖表羡铲,并且免費提供給個人學(xué)習(xí)、個人網(wǎng)站和非商業(yè)用途使用。highcharter包是R語言中繪制Highcharts圖表的包组去,本期介紹在R語言如何使用highcharter包繪制可交互的基礎(chǔ)圖表爷抓。Highcharts詳情:www.hcharts.cn

基本語法

在介紹如何使用highcharter包進行繪圖之前势决,我們先了解一些利用該包進行圖表繪制的基本格式。highcharter包提供了兩種繪制圖形的方式蓝撇,分別是hcharthighchart函數(shù)果复。

hchart的基本語法格式如下,其中的hcaes類似ggplot2中的aes渤昌。

hchart(數(shù)據(jù)集,"圖表類型",hcaes(x ="x軸",y = "y軸"))

highchart的基本語法如下虽抄,highchart相比hchart會更加的靈活和方便走搁。

highchart() %>%   hc_xAxis(categories = x軸)%>%  hc_add_series(name = "數(shù)據(jù)名稱", data = y軸)

在了解基本的語法格式后,我們來詳細的看一下如何進行各種常用圖表的繪制迈窟。

折線圖

基礎(chǔ)折線圖

折線圖的圖表類型符號為line,按照基本的語法格式私植,折線圖的繪制如下:

#導(dǎo)入本文所需的包
library(data.table)
library(dplyr)
library(plyr)
library(highcharter)
#導(dǎo)入所需數(shù)據(jù)集
data(BOD)BOD_line <- BOD
#基礎(chǔ)折線圖
hchart(BOD_line,"line",hcaes(x ="Time",y = "demand"))

顯示點值的折線圖

利用hc_plotOptions可以進行各種圖表內(nèi)容的設(shè)置,接下來會經(jīng)吵岛ǎ看到這個函數(shù)曲稼,值得注意的是hc_plotOptions(圖表類型= ******) 中的圖表類型必須是當(dāng)前繪制的類型符號,比如折線圖則是line

hchart(BOD_line,"line",hcaes(x ="Time",y = "demand")) %>%  
hc_plotOptions(line= list(dataLabels = list(enabled =TRUE)))

隱藏標記的折線圖

在不需要折線圖上顯示數(shù)據(jù)標記點時湖员,我們需要將其隱藏贫悄,通過設(shè)置marker可以實現(xiàn)該功能。

hchart(BOD_line,"line",hcaes(x ="Time",y = "demand")) %>%   
 hc_plotOptions(line= list(marker = list(enabled =FALSE)))

平滑曲線的折線圖

平滑曲線的折線圖的圖表類型為spline娘摔。

hchart(BOD_line,"spline",hcaes(x ="Time",y = "demand")) 

多條折線圖

當(dāng)數(shù)據(jù)要通過某一列值分類窄坦,將另外一列的數(shù)據(jù)拆分成兩部分作圖時,hchart函數(shù)通過設(shè)置group參數(shù)實現(xiàn);如果折線圖的各條線的數(shù)據(jù)是在不同列時晰筛,則可通過highchart作圖實現(xiàn)嫡丙。實現(xiàn)方式分別如下:

hchart函數(shù)通過設(shè)置group參數(shù):

#數(shù)據(jù)準備BOD_line$tag <- rep("a",nrow(BOD_line))
BOD_line2 <- data.frame(Time = BOD_line$Time,demand = BOD$demand + 2,tag = rep("b",nrow(BOD_line)))
BOD_line_rbind <- rbind(BOD_line,BOD_line2)
#作圖
hchart(BOD_line_rbind,"line",hcaes(x ="Time",y = "demand",group = "tag"))

highchart函數(shù)添加hc_add_series:

#數(shù)據(jù)準備
BOD_line3 <- mutate(BOD_line,demand2 = demand + 2)
#作圖
highchart() %>%   hc_xAxis(categories = BOD_line3$Time)%>%  
 hc_add_series(name = "a", data = BOD_line3$demand) %>%  
 hc_add_series(name = "b", data = BOD_line3$demand2)

柱狀圖

基礎(chǔ)柱狀圖

柱狀圖的圖表類型符號為column,按照基本的語法格式,柱狀圖的繪制如下:

#數(shù)據(jù)準備
BOD_Column <- mutate(BOD,Time=as.factor(Time))
#作圖
hchart(BOD_Column,"column",hcaes(x ="Time",y = "demand"))

顯示值的柱狀圖

類似折線圖顯示點值读第,只須將hc_plotOptions中的圖表類型換為column曙博。

hchart(BOD_Column,"column",hcaes(x ="Time",y = "demand"))%>%  
 hc_plotOptions(column= list(dataLabels = list(enabled =TRUE)))

分組柱狀圖

分組柱狀圖則類似多條折線圖的作法,實現(xiàn)方式之一如下:

  BOD_Column2 <- mutate(BOD_Column,demand2 = demand + 2)
  highchart() %>% 
    hc_xAxis(categories = BOD_Column2$Time)%>%
    hc_add_series(name = "a", data = BOD_Column2$demand,type = "column") %>%
    hc_add_series(name = "b", data = BOD_Column2$demand2,type = "column")

堆疊柱狀圖

堆疊柱狀圖的實現(xiàn)怜瞒,將hc_plotOptions中的參數(shù)stacking 設(shè)置為normal即可父泳。

#數(shù)據(jù)準備
BOD_Column4 <- rbind(mutate(BOD_Column,tag = rep("a",nrow(BOD_Column))),  mutate(BOD_Column,tag = rep("b",nrow(BOD_Column)),demand =demand + 2 ))
#作圖
hchart(BOD_Column4,"column",hcaes(x= "Time",y = "demand",group = "tag")) %>%    
 hc_plotOptions(column= list(stacking = "normal"))

百分比堆疊柱狀圖

hc_plotOptions中的參數(shù)stacking 設(shè)置修改為percent即可。

hchart(BOD_Column4,"column",hcaes(x= "Time",y = "demand",group = "tag")) %>%  
 hc_plotOptions(column= list(stacking = "percent"))

條形圖

基礎(chǔ)條形圖

條形圖的圖表類型符號為bar,按照基本的語法格式吴汪,條形圖的繪制如下:

#數(shù)據(jù)準備
BOD_Bar <- mutate(BOD,Time=as.factor(Time))
#作圖
hchart(BOD_Bar,"bar",hcaes(x ="Time",y = "demand"))

其他如:顯示值的條形圖惠窄、分組條形圖、堆疊條形圖等漾橙,可參考柱狀圖的作法方法進行作圖杆融,不在一一列舉。

散點圖

基礎(chǔ)散點圖

散點圖的圖表類型符號為scatter,按照基本的語法格式霜运,散點圖的繪制如下:

#導(dǎo)入數(shù)據(jù)集
library(ggplot2)data(mpg)
#作圖
hchart(mpg, "scatter", hcaes(x = "displ", y = "hwy"))

分組散點圖

將參數(shù)group設(shè)置為進行分組的變量脾歇。

hchart(mpg, "scatter", hcaes(x = "displ", y = "hwy",group = "class"))

特殊的散點圖--氣泡圖

氣泡圖相比散點圖多了一個維度來標明氣泡的大小,氣泡圖的圖表類型符號為bubble淘捡。

hchart(mpg[1:10,], "bubble", hcaes(x = "displ", y = "hwy",z = "cty",group = "drv"))

面積圖

基礎(chǔ)面積圖

面積圖的圖表類型符號為area,按照基本的語法格式藕各,面積圖的繪制如下:

#數(shù)據(jù)準備
data(sleep)sleep$extra_abs <- abs(sleep$extra)
#作圖
hchart(sleep[1:10,], "area", hcaes(x = "ID", y = "extra_abs"))

其他如:堆疊面積圖、百分比堆疊面積圖等焦除,可參考柱狀圖的作法方法進行作圖激况,不在一一列舉。

餅圖

基礎(chǔ)餅圖

餅圖的圖表類型符號為pie,按照基本的語法格式,餅圖的繪制如下:

#數(shù)據(jù)準備
explorer_rate <- data.frame(name = c( 'Internet Explorer', 'Firefox', 'Edge', 'Safari', 'Sogou Explorer', 'Opera', 'QQ', 'Other'),   rate =c(11.84,10.85,4.67,4.18,1.64,1.6,1.2,2.61))
#作圖
hchart(explorer_rate, "pie", hcaes(name = "name", y = "rate"))

顯示值的餅圖

餅圖的顯示值乌逐,同樣通過設(shè)置hc_plotOptions中的參數(shù)dataLabels 竭讳,同時還可設(shè)置format調(diào)整值顯示的格式。

hchart(explorer_rate, "pie", hcaes(x = "name", y = "rate")) %>%     
 hc_plotOptions(pie= list(dataLabels = list(enabled = TRUE,format='<b>{point.name}</b>: {point.rate:.1f} %')))

以上是本期介紹在R語言如何使用highcharter包繪制可交互基礎(chǔ)圖表的全部內(nèi)容黔帕,后續(xù)將會介紹highcharter包中如何進行圖表優(yōu)化以及高級圖表繪制代咸!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市成黄,隨后出現(xiàn)的幾起案子呐芥,更是在濱河造成了極大的恐慌,老刑警劉巖奋岁,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件思瘟,死亡現(xiàn)場離奇詭異,居然都是意外死亡闻伶,警方通過查閱死者的電腦和手機滨攻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓝翰,“玉大人光绕,你說我怎么就攤上這事⌒蠓荩” “怎么了诞帐?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長爆雹。 經(jīng)常有香客問我停蕉,道長,這世上最難降的妖魔是什么钙态? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任慧起,我火速辦了婚禮,結(jié)果婚禮上册倒,老公的妹妹穿的比我還像新娘蚓挤。我一直安慰自己,他們只是感情好驻子,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布灿意。 她就那樣靜靜地躺著,像睡著了一般拴孤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上甲捏,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天演熟,我揣著相機與錄音,去河邊找鬼。 笑死芒粹,一個胖子當(dāng)著我的面吹牛兄纺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播化漆,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼估脆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了座云?” 一聲冷哼從身側(cè)響起疙赠,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朦拖,沒想到半個月后圃阳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡璧帝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年捍岳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睬隶。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锣夹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苏潜,到底是詐尸還是另有隱情银萍,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布窖贤,位于F島的核電站砖顷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赃梧。R本人自食惡果不足惜滤蝠,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望授嘀。 院中可真熱鬧物咳,春花似錦、人聲如沸蹄皱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巷折。三九已至压鉴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锻拘,已是汗流浹背油吭。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工击蹲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人婉宰。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓歌豺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親心包。 傳聞我的和親對象是個殘疾皇子类咧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355