R语言:highcharter包绘制可交互的基础图表


Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在Web网站或是Web应用程序添 加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。highcharter包是R语言中绘制Highcharts图表的包,本期介绍在R语言如何使用highcharter包绘制可交互的基础图表。Highcharts详情:www.hcharts.cn

基本语法

在介绍如何使用highcharter包进行绘图之前,我们先了解一些利用该包进行图表绘制的基本格式。highcharter包提供了两种绘制图形的方式,分别是hcharthighchart函数。

hchart的基本语法格式如下,其中的hcaes类似ggplot2中的aes

hchart(数据集,"图表类型",hcaes(x ="x轴",y = "y轴"))

highchart的基本语法如下,highchart相比hchart会更加的灵活和方便。

highchart() %>%   hc_xAxis(categories = x轴)%>%  hc_add_series(name = "数据名称", data = y轴)

在了解基本的语法格式后,我们来详细的看一下如何进行各种常用图表的绘制。

折线图

基础折线图

折线图的图表类型符号为line,按照基本的语法格式,折线图的绘制如下:

#导入本文所需的包
library(data.table)
library(dplyr)
library(plyr)
library(highcharter)
#导入所需数据集
data(BOD)BOD_line <- BOD
#基础折线图
hchart(BOD_line,"line",hcaes(x ="Time",y = "demand"))

显示点值的折线图

利用hc_plotOptions可以进行各种图表内容的设置,接下来会经常看到这个函数,值得注意的是hc_plotOptions(图表类型= ******) 中的图表类型必须是当前绘制的类型符号,比如折线图则是line

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

隐藏标记的折线图

在不需要折线图上显示数据标记点时,我们需要将其隐藏,通过设置marker可以实现该功能。

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")) 

多条折线图

当数据要通过某一列值分类,将另外一列的数据拆分成两部分作图时,hchart函数通过设置group参数实现;如果折线图的各条线的数据是在不同列时,则可通过highchart作图实现。实现方式分别如下:

hchart函数通过设置group参数:

#数据准备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函数添加hc_add_series:

#数据准备
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)

柱状图

基础柱状图

柱状图的图表类型符号为column,按照基本的语法格式,柱状图的绘制如下:

#数据准备
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)))

分组柱状图

分组柱状图则类似多条折线图的作法,实现方式之一如下:

  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")

堆叠柱状图

堆叠柱状图的实现,将hc_plotOptions中的参数stacking 设置为normal即可。

#数据准备
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中的参数stacking 设置修改为percent即可。

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

条形图

基础条形图

条形图的图表类型符号为bar,按照基本的语法格式,条形图的绘制如下:

#数据准备
BOD_Bar <- mutate(BOD,Time=as.factor(Time))
#作图
hchart(BOD_Bar,"bar",hcaes(x ="Time",y = "demand"))

其他如:显示值的条形图、分组条形图、堆叠条形图等,可参考柱状图的作法方法进行作图,不在一一列举。

散点图

基础散点图

散点图的图表类型符号为scatter,按照基本的语法格式,散点图的绘制如下:

#导入数据集
library(ggplot2)data(mpg)
#作图
hchart(mpg, "scatter", hcaes(x = "displ", y = "hwy"))

分组散点图

将参数group设置为进行分组的变量。

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"))

面积图

基础面积图

面积图的图表类型符号为area,按照基本的语法格式,面积图的绘制如下:

#数据准备
data(sleep)sleep$extra_abs <- abs(sleep$extra)
#作图
hchart(sleep[1:10,], "area", hcaes(x = "ID", y = "extra_abs"))

其他如:堆叠面积图、百分比堆叠面积图等,可参考柱状图的作法方法进行作图,不在一一列举。

饼图

基础饼图

饼图的图表类型符号为pie,按照基本的语法格式,饼图的绘制如下:

#数据准备
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"))

显示值的饼图

饼图的显示值,同样通过设置hc_plotOptions中的参数dataLabels ,同时还可设置format调整值显示的格式。

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包绘制可交互基础图表的全部内容,后续将会介绍highcharter包中如何进行图表优化以及高级图表绘制!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343