R语言:可视化概览
编者按:本文作者 Meng Qi,来自 Teradata Data Science 团队,牛津大学统计系 2013 届研究生。本期博文,就让我们了解一下 R 语言如何进行数据可视化。当统计学家最爱的 R 遇上 「A graph is worth a thousand words」 的可视化工具,会发生什么呢?
欢迎扫码关注数据科学公众号
目录
R 的绘图系统
graphics lattice ggplot2R Graph GalleryR Shiny总结「The simple graph has brought more information to the data analyst』s mind than any other device.」 — John Tukey数据可视化在学术界和工业界都有广泛的应用——除了许多论文里的实验数据图表外,企业的KPI报表、股市的K线图、制造业的感测器数据监测、航空公司的上客监控,包括每年大家喜(ji)闻(si)乐(ren)见(le)的春运大数据,都是可视化的应用。数据可视化可以让我们更直观地从数据中获取信息。demo(graphics)
会给出一些常用图形的样例(如下图),及生成这些图形的代码。
library(lattice)
xyplot(Temp ~ Ozone |factor(Month),
data = airquality,
main="Temp(F) vs Ozone(ppb) by Month",
layout=c(5,1))
library(ggplot2)
ggplot(data=diamonds, mappings=aes(x=carat, y=price))+
geom_point(aes(color=clarity))
ggplot(data=diamonds, mappings=aes(x=carat, y=price))+
geom_point(aes(color=clarity))+stat_smooth()
ggplot(data=diamonds, mappings=aes(x=carat, y=price))+
geom_point(aes(color=clarity))+
stat_smooth()+facet_wrap(~cut)
- 数据(data)和映射(mapping)
- 几何对象(geometric)
- 标度(scale)
- 统计变换(statistics)
- 坐标系统(coordinate)
- 分面(facet)
使用ggplot2绘图的过程就是选择合适的几何对象、图形属性、标度、统计变换、坐标系统和分面等来充分展现数据中所含有的信息的过程。ggplot2的强大之处就在于它的灵活性,通过不同图层的叠加可以做出非常有意思的图形。
R Graph Gallery除了上述提到的三个常用绘图包,R还有很多其他图形绘制的工具,如绘制3D图形的plot3d,rgl,绘制地图的ggmap,leaflet,互动式可视化plotly等等。在这里,我们介绍一个神奇的网站 THE R GRAPH GALLERY (https://www.r-graph-gallery.com)。这个网站为我们提供了平时常用的8大类46种共计数146个(日期:2019-05-13)可视化样例及代码,及他们使用的工具包。THE R GRAPH GALLERY 网站不仅提供各类统计图形的R的实现方式,同时也在收录相对应的Python的实现,是学习可视化非常好的资源。
R Shiny在我们的分析工作中,有时不仅要展示模型结果,还需要把分析历程展示给听众;同时,听众也希望能够参与到分析探索中来。这就需要我们将不同部分的分析 —— 如数据探索,模型构建及评估的过程整合到一起,同时增添可交互性。Shiny (http://shiny.rstudio.com/)是由RStudio开发的一个开源的 R 包,它为使用 R 构建 Web 应用提供了一个有力的 Web 框架。使用Shiny,我们可以用R语言轻松开发互动式web应用。在Shiny的官网上给出了一些App的应用案例:我们通过官网上Kmeans example的例子(Demo)来看一看Shiny App的基本功能。这个例子中用的是R自带的鸢尾花(iris)数据,用过R(或者Python)的朋友应该对这个数据非常熟悉。数据里包含了花萼长度(Sepal.Length),花萼宽度(Sepal.Width),花瓣长度(Pepal. Length),花瓣宽度(Pepal.Width)及花的品种(Species)信息。
在Demo中假设品种未知,通过其它变数将鸢尾花样本分群。默认选项是将样本按照Sepal.Length和 Sepal.Width分成3群。- shinyUI部分控制页面的布置和展示。一方面,在这里可以定义一系列的小工具,如滑动条(sliderInput),选项卡(radioButtons),输入框(numericInput)等来接收用户传入的参数,储存在input变数里。另一方面,它接收shinyServer传来的output变数,并根据用户的定义把它展示在前端。
- shinyServer生成所要展示的结果。它从shinyUI读取input变数,将其作为参数进行模型计算或图形绘制,然后将结果储存在output变数里,传给shinyUI前端。
总结来说,shinyUI用于根据用户的输入生成input,同时展示output结果,shinyServer接收input参数,计算生成output。有兴趣的朋友可以在Shiny的官网找到详细的培训教程。
总结在本文,我们介绍了一些R的常用绘图包以及学习资源:graphics通常用于快速基本的分析绘图,个性化的图形建议使用ggplot2来实现。R Graph Gallery从需求出发,归纳总结了各类图形的使用案例。而Shiny整合前面的所有,生成可互动式的dashboard。这些都是工具,而作为数据科学家,我们要做的就是利用这些工具让数据「说话」。
Reference- BBC Visual and Data Journalism cookbook for R graphics https://bbc.github.io/rcookbook/
- Paul Murrell(2011)R Graphics Second Edition
- ggplot2 Reference https://ggplot2.tidyverse.org/reference/
- THE R GRAPH GALLERY https://www.r-graph-gallery.com
- Shiny http://shiny.rstudio.com
推荐阅读: