R语言:highcharter包绘制可交互的基础图表
Highcharts
是一个用纯JavaScript
编写的一个图表库, 能够很简单便捷的在Web网站或是Web应用程序添 加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。highcharter
包是R语言
中绘制Highcharts
图表的包,本期介绍在R语言
如何使用highcharter
包绘制可交互的基础图表。Highcharts详情:www.hcharts.cn
基本语法
在介绍如何使用highcharter
包进行绘图之前,我们先了解一些利用该包进行图表绘制的基本格式。highcharter
包提供了两种绘制图形的方式,分别是hchart
和highchart
函数。
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
包中如何进行图表优化以及高级图表绘制!