与后端交互 饼图_交互式可视化Recharts·其一

9ef8ce2c7f2647158506ba4d48600a6c.png

百度echart2是实现交互式可视化的产品,而它对应的R语言接口,就是我们今天要介绍的recharts拓展包。相比于ggplot2,recharts最大的优点就是交互式,用户体验的确是比静态的可视化作品更吸引人。要使用recharts,先需要从GitHub接口下载,执行以下的代码:

if (!require(devtools)) library(devtools)
install_github("madlogos/recharts")

整个recharts的核心函数就是echartr(),不同类型的图形只不过是输入的图形类型参数不一样,下面就介绍一下常见的图形。

我们首先来认识一下echartr()的核心参数

echartr(data, x, y, <series>, <weight>, <t>, <type>)

data:传入的数据集(数据框)

x/y:给定的x轴/y轴变量

series:给定的因子变量(离散型),相对于指定分组变量,实现分组的可视化

weight:权重变量,相当于连续型的series

t:时间轴变量,实现按照给定变量的取值,以时间轴连接各阶段的可视化图形

type:图形类型参数

上面就是echartr()的主要参数,当然也有一些其他参数,具体使用再介绍了,下面就来认识常见的图形及其可视化效果。我们这次就先了解直角坐标系图形

1、散点图

# echartr()传入x和y变量,默认会输出散点图,或者指定type的值为'scatter','point','bubble'
echartr(iris, x=Sepal.Width, y=Petal.Width,series = Species)

f2e86a39de352fc75a19611fe6c84de5.gif

我们可以看到将Species因子变量传给series,就能实现分组可视化,结合交互效果就更加锦上添花了。而右上角是自带的一些功能,比如辅助线、区域缩放、数据视图、保存图片等功能。

2、条形图

条形图我们可将因子变量传给x,对应的频数变量传给y(若不赋予y值,默认计算x中各因子的频数),若将数值型变量传给x,则会生成直方图。而绘制条形图需指定type的取值:
(1).水平条形图,type = ‘bar’/‘habr’
(2).垂直条形图,type = ‘vbar’/‘column’
(3).直方图,type = ‘hist’/ ‘histogram’

条形堆积的方式及y轴的统计方式,我们可设置参数subtype:
(1).当我们绘制的是条形图时,默认条形是并排的,可令subtype = 'stack',设置条形为堆积。
(2).绘制直方图,subtype ='count'/'freq'时表示y轴按频率统计,若取值为'density'则按密度统计。

titanic <- data.table::melt(apply(Titanic, c(1,4), sum))
names(titanic) <- c('Class', 'Survived', 'Count')
echartr(titanic, x=Class, y=Count, series =Survived)

47b517c75997f562e94181c70114748b.gif

3、线图

线图需要传入的文本型(因子型)参数x和连续数值型y,且x的一个取值只能对应一个y值。线图又分为各种类型:
(1).普通线图:type="line"
(2).平铺平滑线:type="curve"
(3).面积图:type="area"
(4).平铺平滑面积图:type="wave"

而针对不同类型的线图,参数subtype也有不同的取值,如下:
(1).普通线图/面积图:"stack"(堆积线图) | "smooth"(平滑线图)|"dotted"(虚线)|"solid"(实线图默认)|"dashed"(虚划线)
(2).平铺平滑线图/面积图:"stack"(堆积线图) | "solid"(实线图默认)

#使用我自己的记录的消费数据,绘制线图
echartr(d1,'日期','总费用',type = 'line',subtype='dotted')

490c9c826a819b4f9df876fd3cc6fb3f.gif

特别地,线图还可以通过转换按钮,转换成条形图。

直角坐标系常见的图形基本就介绍到这里了,下面会继续介绍极坐标系的图形。

1、饼图

饼图其实和条形图是很相似的,只是两者的坐标系不一样。所有与条形图一样,可将因子变量传给x,对应的频数变量传给y(若不赋予y值,默认计算x中各因子的频数)。而饼图有个特别的参数facet,是用于接收分面的变量。而饼图基本上是分成三类:
(1).普通饼图:type = "pie"
(2).圆环图:type = "ring"
(3).玫瑰图:type = "rose"

同样地不同类型的饼图,也有不一样的subtype:
(1).普通饼图:"multi"(多选模式)|"clock/clokwise"(饼图顺时针显示)
(2).圆环图:"multi"|"clock/clokwise"|"info"(信息图样式环图)
(3).玫瑰图:"multi"|"clock/clokwise"|"area"(面积模式玫瑰图)|"radius"(半径模式玫瑰图)

#准备好数据集
titanic_sex <- data.table::melt(apply(Titanic, c(1,2,4), sum))
names(titanic_sex)[4] <- "Count"
# 使用时间轴、分面
echartr(titanic_sex, Survived, Count, facet=Class, t=Sex, type='pie')

656424f1587259502656cda84e0eb853.gif

饼图可以转换成漏斗图,上面加入了时间轴和分面的效果,性质与 ggplot2的分面相识。

2、漏斗图

由上面饼图切换漏斗图,其实很容易理解,漏斗图和饼图的用法基本相同,只是图形参数type不一样了。而漏斗图的分为两种:
(1).普通漏斗图,type为funnel
(2).金字塔图,type为pyramid

而两种类型的图形,有着相同的subtype:"left"(图形左对齐),"center"(图形居中),"right"(图形右对齐)

#使用一样的数据集
echartr(titanic_sex, Survived, Count, facet=Class, t=Sex, type='funnel')

817a02ff874a3cfc596fab0e1682eeca.gif

3、雷达图

假如大家玩过网络游戏的话,基本上会对雷达图有一定的认识。雷达图可以比较直观地衡量事物各项指标的优劣。而我们要使用雷达图,也只需要各项指标及其对应的数值。而在recharts中的雷达图只有"radar"一种类型,而subtype也只有一种"fill",意思是否采用填充的方式绘制雷达图。

# 创建数据集
d = data.frame(x = c("精密度","力量","成长","防御","速度"),y=c(0.3,5,0.66,4,1))
echartr(d,x,y,type = 'radar',subtype = 'fill')

154758c26ecf31e0fcc005fcc1564d1b.gif

基本上recharts上的基本图形都介绍一次,其实重点并不在于可视化的能力和效果,关键是大家在面对数据的时候,能作出正确的判断,选择合适的图形绘制。下一次我将继续和大家介绍recharts另外的特殊图形,望各位多多支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值