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
包提供了兩種繪制圖形的方式蓝撇,分別是hchart
和highchart
函數(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)化以及高級圖表繪制代咸!