前言

数据可视化是数据挖掘非常重要的一个环节,它不单在查阅了解数据环节使用到,在整个数据挖掘的流程中都会使用到。

因为数据可视化不单可以形象地展示数据,让你对数据有更好的总体上的了解,而且还可以让你清晰的将自己的观点表述出来。因此不仅仅是在项目实施环节,在与客户谈需求或者写论文时,数据可视化也能帮到你。

但在介绍统计图的具体绘制之前,先来看看两个基本的图像绘制函数plot和legend。

绘图基础函数 - Plot

在R语言中,plot是基本的用来绘制点和线段的函数。

最基本的调用方式为:plot (x轴数据, y轴数据)。然而plot还提供了很多参数供以优化:

pch:用于显示点的坐标,可以是一个字符,也可以是0到25的一个整数。如:pch=“+”,pch=1
lty:线条类型。如:lty=2,lty=1
lwd:线条宽度。如:lwd=2
col:点,线,文本,填充区域的颜色设置,col.axis, col.sub, col.main分别对应坐标轴标注,子标题,主标题颜色。如col=2, col.sub=2
font:字体设置。同上
cex:字符扩张率,这个值表示期望字符(包括绘图字符)大小相对默认大小的比率。
xlim和ylim:表示x轴和y轴的长度,如:plot(passign, type="l", xlim=c(0,100))就表示x轴坐标是从0到一百。
add=TRUE 强制函数以低级绘图函数的形式运行,在当前的图上加载新的图形元素(仅适合于部分函数)。
axes=FALSE 禁止产生坐标轴|当你想用函数axis() 绘制个性化的坐标轴时非常有用。默认值是axes=TRUE,表示产生坐标轴
log:log="x",log="y", log="xy"让x 轴,y 轴或者两者都成为对数坐标轴,这对很多图都有效,但不是全部。
type= 参数type= 控制输出图形(特别是线条)的类型:
type="p" 只显示点(默认)
type="l" 显示线条
type="b" (同时)显示点和线
type="o" 将点覆盖在线上
type="h" 绘制从点到零轴(x 轴)的垂直线(高密度(high-density))
type="s"
type="S" 步阶图。第一种形式,垂直线顶部匹配数据点;第二种形式,底部匹配。
type="n" 图形不显示。但是坐标轴仍然显示(默认),并且坐标依然以数据设定。这个非常适合随后用低级绘图函数画图。
xlab=string/ylab=string:设定x 和y 轴的标签。可以用这些参数修改默认标签。默认标签常常是用于高级绘图函数中的对象的名字。

在plot函数的基础之上,可以画点,画线,添加文本。画点和画线的函数分别为points和lines函数,其调用方式比较简单,这里不再细说。

下面再来介绍另一个重要的绘图函数。

绘图基础函数 - legend

legend(x, y, legend, ...)用来在当前图的特定位置增加图例(legend)。标识字符,线条格式,颜色等都是被字符向量legend中的标签所注释。另外一个含有画图单位对应值的参数v (一个和legend 长度一致的向量)是必须给定的:

legend( , fill=v)
- 填充盒子的颜色
legend( , col=v)
- 点或者线条的颜色
legend( , lty=v)
- 线条样式
legend( , lwd=v)
- 线条宽度
legend( , pch=v)
- 标识字符(字符向量)

直方图

使用hist函数可以绘制出某列变量的直方图,效果如上图所示。它是保险索赔数据库中索赔金额的直方分布图。

该图的函数调用代码为:

hist函数有以下几个参数:
- 首参:数据向量
- density:直方图阴影系数。值越大阴影度越高。
- main:直方图标题名。如上图的"Histogram of Freq of Insurance$Claims"。
- xlab:横轴名
- ylab:纵轴名
- col,border:直方图的颜色以及边界颜色。可自定义色调风格,但是与density参数互斥。
- break:分组间距

条形图

该图是保险索赔数据集中索赔人年龄的条形分布图。

可见,条形图与直方图比较相似,但它的特点是需要定制每个区间,因为这些区段之间表达的意义也许是没有任何联系的。同时,它可以很好地处理非数值型的数据统计。因此,这种图形的使用频率也相当高,应当引起重视。

一般来说,绘制条形图需要以下两个步骤:

1. 生成统计向量。也就是说,每个条形表示的值具体是多少。
本例中的调用代码为:

生成的向量为索赔人年龄在各个区间内的人数。

2. 进行绘制。

调用代码为:

barplot函数有以下几个参数:

- 首参:数据向量,这个常常需要自行计算来定制。
- names.arg:各条形的名字
- density,main,xlab,ylab,col,denstity:意义同直方图。不过col,denstity参数为向量格式 - 为了分别定制每个条形。
- besides:是绘制分组条形图,还是堆叠条形图。该参数的具体使用下面会说。

需要特别说明的是,柱状图更为常用的地方在于绘制分组条形图,如下图所示:

要绘制这种条形图,在上图的基础上,需要作出如下的改动:

1. 生成两组统计向量,并将它们通过函数rbind给绑定起来:

2. 在绘制函数barplot中,加入参数设定beside=TRUE:

如果不加的话会自动生成叠加风格的条形图:

3. 最后,在图的左上方加上这不同两个条形的具体意义:

饼图

本例子展示的是一个3D图。它需要使用一个新的包plotrix。饼图的绘制比较简单,调用代码示例如下:

主要说明的是如下两个参数:

- explode:这个参数就是各个饼成员之间的间距
       - labelcex:各个饼之间的缝隙大小

其他参数和前面几个图的绘制函数的差不多,不再累述了。

中文字符兼容性解决方案

在导出为高清pdf格式的时候,有时候会有中文字符不兼容的问题。解决方案为:

1. 安装Cario软件包并加载
2. 调用函数CairoPDF("PDF完整路径名")指定PDF文件保存路径及文件名
3. 在调用绘图函数时加上一个新的参数 family = "字体名"。字体参数表见文章尾部。
4. 语句dev.off执行保存

下面是一段保存高清pdf的代码示例:

library(Cairo)
CairoPDF("f:\\1.pdf")
pie3D(Claims_Age, labels=c("<25", "25-29", "30-35", ">35"), explode = 0.1, labelcex = 0.8, main = "中文字符", col = c("green", "blue", "orange", "yellow"), family = "SimSun")
dev.off()

小结

R语言还支持很多类型的图,有些复杂点的图甚至独立成了一个专门的包。可根据实际的需要进行选择并绘制。

附字体参数表:

1 新细明体 PMingLiU
2 细明体 MingLiU
3 标楷体 DFKai-SB
4 黑体 SimHei
5 宋体 SimSun
6 新宋体 NSimSun
7 仿宋 FangSong
8 楷体 KaiTi
9 仿宋_GB2312 FangSong_GB2312
10 楷体_GB2312 KaiTi_GB2312
11 微软正黑体 Microsoft JhengHei
12 微软雅黑 Microsoft YaHei
13 隶书 LiSu
14 幼圆 YouYuan
15 华文细黑 STXihei
16 华文楷体 STKaiti
17 华文宋体 STSong
18 华文中宋 STZhongsong
19 华文仿宋 STFangsong
20 方正舒体 FZShuTi
21 方正姚体 FZYaoti
22 华文彩云 STCaiyun
23 华文琥珀 STHupo
24 华文隶书 STLiti
25 华文行楷 STXingkai
26 华文新魏 STXinwei

第二篇:数据可视化 - 基本API的更多相关文章

  1. 第二篇 Integration Services:SSIS数据泵

    本篇文章是Integration Services系列的第二篇,详细内容请参考原文. 简介SSIS用于移动数据.数据流任务提供此功能.因为这个原因,当介绍SSIS时我喜欢从数据流任务开始.数据流任务的 ...

  2. 第四篇:R语言数据可视化之折线图、堆积图、堆积面积图

    折线图简介 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先 ...

  3. 【译】第二篇 Integration Services:SSIS数据泵

    本篇文章是Integration Services系列的第二篇,详细内容请参考原文. 简介SSIS用于移动数据.数据流任务提供此功能.因为这个原因,当介绍SSIS时我喜欢从数据流任务开始.数据流任务的 ...

  4. 数据可视化之PowerQuery篇(四)二维表转一维表,看这篇文章就够了

    https://zhuanlan.zhihu.com/p/69187094 数据分析的源数据应该是规范的,而规范的其中一个标准就是数据源应该是一维表,它会让之后的数据分析工作变得简单高效. 在之前的文 ...

  5. 解剖SQLSERVER 第二篇 对数据页面头进行逆向(译)

    解剖SQLSERVER 第二篇  对数据页面头进行逆向(译) http://improve.dk/reverse-engineering-sql-server-page-headers/ 在开发Orc ...

  6. 前端使用d3.js调用地图api 进行数据可视化

    前段时间自己研究了demo就是把某个区域的某个位置通过经纬度在地图上可视化.其实就是使用了第三方插件,比现在比较火的可视化插件d3.js echart.js.大致思路就是,把要用到的位置的geojso ...

  7. 【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  8. 【开源.NET】 轻量级内容管理框架Grissom.CMS(第二篇前后端交互数据结构分析)

    这是 CMS 框架系列文章的第二篇,第一篇开源了该框架的代码和简要介绍了框架的目的.作用和思想,这篇主要解析如何把sql 转成标准 xml 配置文件和把前端post的增删改数据规范成方便后台解析的结构 ...

  9. 【WaaCaa】一款开源科学作图/数据可视化工具 —— 诞生篇

    作为一个理工男.用过了形形色色能够用于科学作图/数据可视化软件:从大学时做实验课推荐用于分析简单採集数据的 Origin; 毕业论文时用来呈现实验时序信号和离线分析脑电信号的 MATLAB.后面还发现 ...

随机推荐

  1. Win10编译SqlCipher步骤

    准备工作 Visual Studio 2015,其他版本未验证,估计问题不大 ActiveState ActivePerl,用于编译OpenSSL Mingw,在官网下载minimum install ...

  2. Flink入门使用

    完全参考:Flink1.3QuickStart 启动本地运行 首先找一台安装了hadoop的linux. 将安装包解压,到bin目录启动local模式的脚本. tar -zxvf flink-1.3. ...

  3. 使用DateTimeOffset 对xml中的日期时间格式时区进行处理

    在日常使用中难免会与XML打交道,其中一个常用的格式就是日期了. 交互的时候通常有下面2种方式 DECLARE @Doc XML=' <R> <T>2018-02-22+08: ...

  4. 让我们一起摇摆 Turnipbit体感遥控车

    相信大家对Microbit是非常熟悉的,而今天我们做的这个小玩具所用的核心板是Turnipbit,是基于 Microbit开发的一块适合儿童适用的板卡.基本使用原理是一样的,这里就不多介绍了,代码这方 ...

  5. php define和const的区别

    1.使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数2.const用于类成员变量的定义,一经定义,不可修改.3.Define不可以用于类成员变量的定义,可用于全 ...

  6. 【转】Nginx配置详解

    转自:http://www.cnblogs.com/knowledgesea/p/5175711.html Nginx常用功能 1. Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反 ...

  7. laravel框架学习-缓存,事件

    缓存配置:app/config/cache.php   缓存:     增加缓存项: Cache::put( 'key', 'value', $Cachetime );     在缓存中增加一个不存在 ...

  8. 大型互联网公司Java开发岗位面试题归类!

    ​一.Java基础 1. String类为什么是final的. 2. HashMap的源码,实现原理,底层结构. 3. 说说你知道的几个Java集合类:list.set.queue.map实现类咯.. ...

  9. css命名整理

    .container { width: 720px; background: #fafafa; border: 2px dashed #999; padding: 10px; float: left ...

  10. 阿里云Aliyun_server

    一.云概念 云主机是基于云计算平台的一种虚拟的主机服务器产品 云服务器(99.999%安全性,扩展性) 特点: 1.资源分配配置灵活,安全性能强. 2.优于VPS和独立服务器产品.通俗的理解: 云主机 ...