今天,随着数据量的不断增加,数据可视化成为将数字变成可用的信息的一个重要方式。R语言提供了一系列的已有函数和可调用的库,通过建立可视化的方式进行数据的呈现。在使用技术的方式实现可视化之前,我们可以先和雷锋网一起看看如何选择正确的图表类型。

作者 Dikesh Jariwala是一个软件工程师,并且在Tatvic平台上编写了一些很酷很有趣的程序。他用API编写了第一版Price Discovery,雷锋网对他所写的这篇文章做了编译,未经许可不得转载。

如何选择正确的图表类型

四种可选择的基本类型:

1、  比较类图表

2、  组成类图表

3、  分布类图表

4、  关系类图表

为了选择最适合分析手中数据的图表类型,首先考虑以下几个问题:

  • 单个图表里,需要几个变量?

  • 单个变量,需要用多少数据点来描述?

  • 数据是随时间的变量,还是离散的,以单体或组的形式?

针对如何选择最适宜的图表,Dr.Andrew Abela 提供了一个很好的方法示意图:

在使用图表分析的时候,常用的有7种图表:

1.  散点图

2.  直方图

3.  柱状图和条形图

4.  箱线图

5.  面积图

6.  热点图

7.  相关图

我们使用“Big Mart data”作为案例来理解 R 可视化的实现方法,你可以点击此处下载完整的数据(google doc)

雷锋网(公众号:雷锋网)将在以下篇幅介绍如何利用 R 实现可视化:

1、  散点图

使用场景:散点图通常用于分析两个连续变量之间的关系。

在上面介绍的超市数据中,如果我们想根据他们的成本数据来可视化商品的知名度,我们可以用散点图,两个连续的变量这里我们命名为Item_Visibility和Item_MRP。

这里使用R中的ggplot()和geom_point()函数。

library(ggplot2)          // ggplot2 是R中的一个函数库

ggplot(train, aes(Item_Visibility, Item_MRP)) + geom_point() + scale_x_continuous("Item

Visibility", breaks = seq(0,0.35,0.05))+ scale_y_continuous("Item MRP", breaks = seq(0,270,by =

30))+ theme_bw()

下图中增加了一个新的变量,对产品进行分类的变量,命名为Item_Type,图中以不同的颜色作为显示。

R代码中增加了分组:

ggplot(train, aes(Item_Visibility, Item_MRP)) + geom_point(aes(color = Item_Type)) +

scale_x_continuous("Item Visibility", breaks = seq(0,0.35,0.05))+

scale_y_continuous("Item MRP", breaks = seq(0,270,by = 30))+

theme_bw() + labs(title="Scatterplot")

可以进一步可视化,将散点图以不同的小图表的形式呈现,下图中,每一个小图表都代表一种不同的产品:

代码如下:

ggplot(train, aes(Item_Visibility, Item_MRP)) + geom_point(aes(color = Item_Type)) +

scale_x_continuous("Item Visibility", breaks = seq(0,0.35,0.05))+

scale_y_continuous("Item MRP", breaks = seq(0,270,by = 30))+

theme_bw() + labs(title="Scatterplot") + facet_wrap( ~ Item_Type)

代码中,facet_warp将图像显示在长方形图表中。

2、  直方图

使用场景:直方图用于连续变量的可视化分析。将数据划分,并用概率的形式呈现数据的规律。我们可以将分类根据需求进行组合和拆分,从而通过这种方式看到数据的变化。

继续使用上面我们引入的超市数据的例子,如果我们需要知道不同成本段的商品的数量,我们可以将所有数据画出一个直方图,Item_MRP作为横坐标。如下图所示:

下面是一个简单的画直方图的例子,使用的是R中的ggplot()和geom_histogram()函数。

ggplot(train, aes(Item_MRP)) + geom_histogram(binwidth = 2)+

scale_x_continuous("Item MRP", breaks = seq(0,270,by = 30))+

scale_y_continuous("Count", breaks = seq(0,200,by = 20))+

labs(title = "Histogram")

3、  柱状图和条形图

使用场景:柱状图一般用于表现分类的变量或者是连续的分类变量的组合。

在超市数据的例子中,如果我们需要知道在每一年新开的超市的门店数量,那么柱状图就是一个很好的图形分析的方式。用“年”的信息作为坐标,如下图所示:

下面是一个简单的画柱状图的例子,使用的是R中的ggplot()函数。

ggplot(train, aes(Outlet_Establishment_Year)) + geom_bar(fill = "red")+theme_bw()+

scale_x_continuous("Establishment Year", breaks = seq(1985,2010)) +

scale_y_continuous("Count", breaks = seq(0,1500,150)) +

coord_flip()+ labs(title = "Bar Chart") + theme_gray()

水平柱状图

去除代码中的coord_flIP()变量,可以将直方图以水平直方图的方法呈现。

为了得到商品重量(连续变量)和折扣店(分类变量)的关系,可使用下面的代码:

ggplot(train, aes(Item_Type, Item_Weight)) + geom_bar(stat = "identity", fill = "darkblue") +

scale_x_discrete("Outlet Type")+ scale_y_continuous("Item Weight", breaks = seq(0,15000, by =

500))+ theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) + labs(title = "Bar Chart")

堆叠条形图

堆叠条形图是柱状图的一个高级版本,可以将分类变量组合进行分析。

超市数据的例子中,如果我们想要知道不同分类商品的折扣店数量,包含折扣店种类和折扣店区域,堆叠条形图就是做这种分析最为有效的图表分析方法。

下面是一个简单的画堆叠条形图的例子,使用的是R中的ggplot()函数。

ggplot(train, aes(Outlet_Location_Type, fill = Outlet_Type)) + geom_bar()+

labs(title = "Stacked Bar Chart", x = "Outlet Location Type", y = "Count of Outlets")

4、  箱线图

使用场景:箱线图一般用于相对复杂的场景,通常是组合分类的连续变量。这种图表应用于对数据延伸的可视化分析和检测离值群。主要包含数据的5个重要节点,最小值,25%,50%,75%和最大值。

在我们的案例中,如果我们想要找出每个折扣店每个商品销售的价格的情况,包括最低价,最高价和中间价,箱线图就大有用处。除此之外,箱线图还可以提供非正常价格商品销售的情况,如下图所示。

图中,黑色的点为离值群。离值群的检测和剔除是数据挖掘中很重要的环节。

下面是一个简单的画箱线图的例子,使用的是R中的ggplot()和geom_boxplot函数。

ggplot(train, aes(Outlet_Identifier, Item_Outlet_Sales)) + geom_boxplot(fill = "red")+

scale_y_continuous("Item Outlet Sales", breaks= seq(0,15000, by=500))+

labs(title = "Box Plot", x = "Outlet Identifier")

5、  面积图

使用场景:面积图通常用于显示变量和数据的连续性。和线性图很相近,是常用的时序分析方法。另外,它也被用来绘制连续变量和分析的基本趋势。

超市案例中,当我们需要知道随着时间的眼神,折扣店商品的品种走势,我们可以画出如下的面积图,图中呈现了折扣店商品的成交量的变化。

下面是一个简单的画面积图的例子,用于分析折扣店商品成交数量的走势,使用的是R中的ggplot()和geom_area函数。

ggplot(train, aes(Item_Outlet_Sales)) + geom_area(stat = "bin", bins = 30, fill = "steelblue") +

scale_x_continuous(breaks = seq(0,11000,1000))+

labs(title = "Area Chart", x = "Item Outlet Sales", y = "Count")

6、  热点图

使用场景:热点图用颜色的强度(密度)来显示二维图像中的两个或多个变量之间的关系。可对图表中三个部分的进行信息挖掘,两个坐标和图像颜色深度。

超市案例中,如果我们需要知道每个商品在每个折扣店的成本,如下图中所示,我们可以用三个变量Item_MRP,Outlet_Identifier和Item_type进行分析。

暗的数据表示Item_MRP低于50,亮的数据表示Item_MRP接近250。

下面是R代码,使用了ggplot()函数做简单的热点图。

ggplot(train, aes(Outlet_Identifier, Item_Type))+

geom_raster(aes(fill = Item_MRP))+

labs(title ="Heat Map", x = "Outlet Identifier", y = "Item Type")+

scale_fill_continuous(name = "Item MRP")

7、  关系图

使用场景:关系图用作表示连续变量之间的关联性。每个单元可以标注成阴影或颜色来表明关联的程度。颜色越深,代表关联程度越高。正相关用蓝色表示,负相关用红色表示。颜色的深度随着关联程度的递增而递增。

超市案例中,用下图可以展现成本,重量,知名度与折扣店开业的年份和销售价格之间的关系。可以发现,成本和售价成正相关,而商品的重量和知名度成负相关。

下面是用作简单关系图的R代码,使用的是corrgram()函数。

install.packages("corrgram")

library(corrgram)

corrgram(train, order=NULL, panel=panel.shade, text.panel=panel.txt,

main="Correlogram")

通过以上的分类介绍和R程序的简单介绍,相信你可以使用R中的ggplot库进行自己的数据可视化分析了。 除了可视化分析,你还可以通过我们的网络课程进一步的学习使用R进行的数据挖掘,欢迎访问我们的网页“Google Analytics Data Mining with R”。

本文作者:雪莉•休斯敦   

本文转自雷锋网禁止二次转载,原文链接

用数据说话,R语言有哪七种可视化应用?的更多相关文章

  1. 大数据之R语言速成与实战

    什么是R语言? R语言由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman两人共同发明.其词法和语法分别源自Scheme和S语言. R定义:一个能够自有有效的用于统计计算和绘图的 ...

  2. 写论文,没数据?R语言抓取网页大数据

    写论文,没数据?R语言抓取网页大数据 纵观国内外,大数据的市场发展迅猛,政府的扶持也达到了空前的力度,甚至将大数据纳入发展战略.如此形势为社会各界提供了很多机遇和挑战,而我们作为卫生(医学)统计领域的 ...

  3. R语言中的几种数据结构

    R语言中的几种数据结构 一  R中对象的5种基本类型 字符(character) 整数 (integer) 复数(complex) 逻辑(logical:True/False) 数值(numeric: ...

  4. Symbol -- JavaScript 语言的第七种数据类型

    ES5 的对象属性名都是字符串,这容易造成属性名的冲突.比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突.如果有一种机制,保证 ...

  5. 大数据平台R语言web UI应用架构 设计与开发

    1. 系统拓扑图 在日常业务分析中,R是非常常用的分析工具,而当数据量较大时,用R语言需要需用更多的时间来完成训练模型,spark作为大规模数据处理框架,采用内存计算,可以短时间内完成大量的数据的处理 ...

  6. R语言实战(七)图形进阶

    本文对应<R语言实战>第11章:中级绘图:第16章:高级图形进阶 基础图形一章,侧重展示单类别型或连续型变量的分布情况:中级绘图一章,侧重展示双变量间关系(二元关系)和多变量间关系(多元关 ...

  7. 经典书单、站点 —— 大数据/数据分析/R语言

    1. 科普.入门 <大数据智能>,刘知远.崔安顺等著: 特色:系统,宏观和全面: 2. R 语言站点 http://langdawei.com/:R 语言数据采集与可视化:

  8. 大数据基础--R语言(刘鹏《大数据》课后习题答案)

    1.R语言是解释性语言还是编译性语言?   解释性语言 2.简述R语言的基本功能.   R语言是一套完整的数据处理.计算和制图软件系统,主要包括以下功能: (1)数据存储和处理功能,丰富的数据读取与存 ...

  9. 数据科学 R语言速成

    文章更新于:2020-03-07 按照惯例,需要的文件附上链接放在文首: 文件名:R-3.6.2-win.exe 文件大小:82.4M 下载链接:https://www.lanzous.com/i9c ...

随机推荐

  1. 家庭版记账本app进度之编辑框组件

    <EditText>中设置提示信息是用到的语句是android:hint来进行提示语句的书写. android:inputType可以将此编辑框设置为输入密码的编辑框(现实的是小黑点) a ...

  2. Flask 入门(七)

    flask操作数据库:建表: 承接上文: 修改main.py中的代码如下: #encoding:utf-8 from flask_sqlalchemy import SQLAlchemy from f ...

  3. ES5和ES6基本介绍与面向对象的基本思想

    ES6和ES5基本介绍 let  const  关键词定义变量 let 定义变量 特点: let 定义的变量,不会进行预解析  let 定义的变量,与 forEach() 中的变量类似  每次执行都会 ...

  4. 用python爬取之后发现果然如此,都说知乎的小姐姐漂亮

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...

  5. Win32 Disk Imager刻录过的U盘恢复容量的方法

    近日遇到一个问题,使用Win32 Disk Imager刻录过的U盘,想恢复使用,但无法正常使用. 按WIN+R键调出Win10运行框,输入diskmgmt.msc,打开磁盘管理工具. 看到U盘的状况 ...

  6. Numpy学习-(1)

    记录我学习Numpy过程 1. 介绍 (1)NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库 ...

  7. Postman:Pre-request Script

    Pre-request Script:前置处理,会在发出请求前执行,主要用在生成一些动态参数. 例如:api接口都会有签名校验,这个校验在我们api测试的时候很不方便,这里可以利用 postman 前 ...

  8. [YII2] 去除自带js,加载自己的JS,然后ajax(json)传值接值!

    本想用YII2自带的JS,可是用着效果不好,想从新加载,找了好多终于实现啦!还有ajax(json)传值接值! 首先直接了当的就把YII2自带的js去掉! 把下面代码加入到/config/main.p ...

  9. net core天马行空系列:降低net core门槛,数据库操作和http访问仅需写接口,实现类由框架动态生成

    引文   hi,大家好,我是三合.不知各位有没有想过,如果能把数据库操作和http访问都统一封装成接口(interface)的形式, 然后接口对应的实现类由框架去自动生成,那么必然能大大降低工作量,因 ...

  10. Nginx(1)---安装及基础命令

    一.简述 Nginx是一个高性能WEB服务器,除它之外Apache.Tomcat.Jetty.IIS,它们都是Web服务器 Nginx  相对基它WEB服务有什么优势:Tomcat.Jetty 面向j ...