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

R语言:highcharter包绘制可交互的基础图表_第1张图片

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"))
R语言:highcharter包绘制可交互的基础图表_第2张图片

显示点值的折线图

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

hchart(BOD_line,"line",hcaes(x ="Time",y = "demand")) %>%  
hc_plotOptions(line= list(dataLabels = list(enabled =TRUE)))
R语言:highcharter包绘制可交互的基础图表_第3张图片

隐藏标记的折线图

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

hchart(BOD_line,"line",hcaes(x ="Time",y = "demand")) %>%   
 hc_plotOptions(line= list(marker = list(enabled =FALSE)))
R语言:highcharter包绘制可交互的基础图表_第4张图片

平滑曲线的折线图

平滑曲线的折线图的图表类型为spline

hchart(BOD_line,"spline",hcaes(x ="Time",y = "demand")) 
R语言:highcharter包绘制可交互的基础图表_第5张图片

多条折线图

当数据要通过某一列值分类,将另外一列的数据拆分成两部分作图时,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)
R语言:highcharter包绘制可交互的基础图表_第6张图片

柱状图

基础柱状图

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

#数据准备
BOD_Column <- mutate(BOD,Time=as.factor(Time))
#作图
hchart(BOD_Column,"column",hcaes(x ="Time",y = "demand"))
R语言:highcharter包绘制可交互的基础图表_第7张图片

显示值的柱状图

类似折线图显示点值,只须将hc_plotOptions中的图表类型换为column

hchart(BOD_Column,"column",hcaes(x ="Time",y = "demand"))%>%  
 hc_plotOptions(column= list(dataLabels = list(enabled =TRUE)))
R语言:highcharter包绘制可交互的基础图表_第8张图片

分组柱状图

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

  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")
R语言:highcharter包绘制可交互的基础图表_第9张图片

堆叠柱状图

堆叠柱状图的实现,将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"))
R语言:highcharter包绘制可交互的基础图表_第10张图片

百分比堆叠柱状图

hc_plotOptions中的参数stacking 设置修改为percent即可。

hchart(BOD_Column4,"column",hcaes(x= "Time",y = "demand",group = "tag")) %>%  
 hc_plotOptions(column= list(stacking = "percent"))
R语言:highcharter包绘制可交互的基础图表_第11张图片

条形图

基础条形图

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

#数据准备
BOD_Bar <- mutate(BOD,Time=as.factor(Time))
#作图
hchart(BOD_Bar,"bar",hcaes(x ="Time",y = "demand"))
R语言:highcharter包绘制可交互的基础图表_第12张图片

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

散点图

基础散点图

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

#导入数据集
library(ggplot2)data(mpg)
#作图
hchart(mpg, "scatter", hcaes(x = "displ", y = "hwy"))
R语言:highcharter包绘制可交互的基础图表_第13张图片

分组散点图

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

hchart(mpg, "scatter", hcaes(x = "displ", y = "hwy",group = "class"))
R语言:highcharter包绘制可交互的基础图表_第14张图片

特殊的散点图--气泡图

气泡图相比散点图多了一个维度来标明气泡的大小,气泡图的图表类型符号为bubble

hchart(mpg[1:10,], "bubble", hcaes(x = "displ", y = "hwy",z = "cty",group = "drv"))
R语言:highcharter包绘制可交互的基础图表_第15张图片

面积图

基础面积图

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

#数据准备
data(sleep)sleep$extra_abs <- abs(sleep$extra)
#作图
hchart(sleep[1:10,], "area", hcaes(x = "ID", y = "extra_abs"))
R语言:highcharter包绘制可交互的基础图表_第16张图片

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

饼图

基础饼图

饼图的图表类型符号为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"))
R语言:highcharter包绘制可交互的基础图表_第17张图片

显示值的饼图

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

hchart(explorer_rate, "pie", hcaes(x = "name", y = "rate")) %>%     
 hc_plotOptions(pie= list(dataLabels = list(enabled = TRUE,format='{point.name}: {point.rate:.1f} %')))
R语言:highcharter包绘制可交互的基础图表_第18张图片

以上是本期介绍在R语言如何使用highcharter包绘制可交互基础图表的全部内容,后续将会介绍highcharter包中如何进行图表优化以及高级图表绘制!

你可能感兴趣的:(R语言:highcharter包绘制可交互的基础图表)