第二篇:数据可视化 - 基本API
前言
数据可视化是数据挖掘非常重要的一个环节,它不单在查阅了解数据环节使用到,在整个数据挖掘的流程中都会使用到。
因为数据可视化不单可以形象地展示数据,让你对数据有更好的总体上的了解,而且还可以让你清晰的将自己的观点表述出来。因此不仅仅是在项目实施环节,在与客户谈需求或者写论文时,数据可视化也能帮到你。
但在介绍统计图的具体绘制之前,先来看看两个基本的图像绘制函数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的更多相关文章
- 第二篇 Integration Services:SSIS数据泵
本篇文章是Integration Services系列的第二篇,详细内容请参考原文. 简介SSIS用于移动数据.数据流任务提供此功能.因为这个原因,当介绍SSIS时我喜欢从数据流任务开始.数据流任务的 ...
- 第四篇:R语言数据可视化之折线图、堆积图、堆积面积图
折线图简介 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先 ...
- 【译】第二篇 Integration Services:SSIS数据泵
本篇文章是Integration Services系列的第二篇,详细内容请参考原文. 简介SSIS用于移动数据.数据流任务提供此功能.因为这个原因,当介绍SSIS时我喜欢从数据流任务开始.数据流任务的 ...
- 数据可视化之PowerQuery篇(四)二维表转一维表,看这篇文章就够了
https://zhuanlan.zhihu.com/p/69187094 数据分析的源数据应该是规范的,而规范的其中一个标准就是数据源应该是一维表,它会让之后的数据分析工作变得简单高效. 在之前的文 ...
- 解剖SQLSERVER 第二篇 对数据页面头进行逆向(译)
解剖SQLSERVER 第二篇 对数据页面头进行逆向(译) http://improve.dk/reverse-engineering-sql-server-page-headers/ 在开发Orc ...
- 前端使用d3.js调用地图api 进行数据可视化
前段时间自己研究了demo就是把某个区域的某个位置通过经纬度在地图上可视化.其实就是使用了第三方插件,比现在比较火的可视化插件d3.js echart.js.大致思路就是,把要用到的位置的geojso ...
- 【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【开源.NET】 轻量级内容管理框架Grissom.CMS(第二篇前后端交互数据结构分析)
这是 CMS 框架系列文章的第二篇,第一篇开源了该框架的代码和简要介绍了框架的目的.作用和思想,这篇主要解析如何把sql 转成标准 xml 配置文件和把前端post的增删改数据规范成方便后台解析的结构 ...
- 【WaaCaa】一款开源科学作图/数据可视化工具 —— 诞生篇
作为一个理工男.用过了形形色色能够用于科学作图/数据可视化软件:从大学时做实验课推荐用于分析简单採集数据的 Origin; 毕业论文时用来呈现实验时序信号和离线分析脑电信号的 MATLAB.后面还发现 ...
随机推荐
- C#开发短信发送
//需要用到的命名空间 using System.Net;using System.IO;using System.Text;//调用时只需要把拼成的URL传给该函数即可.判断返回值即可public ...
- PHP 支持8种基本的数据类型
四种标量类型: boolean (布尔型):这是最简单的类型,只有两种取值,可以为 TRUE/true 或 FALSE/false ,不区分大小写.详细请查看:PHP布尔类型(boolean)inte ...
- LeetCode - 626. Exchange Seats
Mary is a teacher in a middle school and she has a table seat storing students' names and their corr ...
- String,StringBuffer,StringBuilder的区别
数据结构: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合. 比如数据库就是对硬盘中的数据进行有规则的管理,可以进行增删改查工作,而良好的数据结构可以优化这些操作, 也许大家会想这些和St ...
- MarkDown思考
前言 使用MarkDown有一段时间了,感觉的确很方便.大大提高了工作效率,并带来了良好的工作体验.但是,一直以来我都有一个困惑,就是MarkDown的插件和编辑器纷繁无比,却通常各自有一套自己的实现 ...
- Centos6.8安装zabbix-3.2.6
系统环境:Centos6.8 mini软件:zabbix-3.2.6 zabbix 服务端安装 安装yum 扩展源 rpm -ivh http://repo.webtatic.com/yum/el6/ ...
- filezilla server客户端FTP连接不上解决
windows服务器上安装Filezilla server后,本地客户端连接不上.解决办法: 1.在防火墙把filezilla的 Filazilla server interface.exe 和Fil ...
- php 高并发下 秒杀处理思路
1.用额外的单进程处理一个队列,下单请求放到队列里,一个个处理,就不会有并发的问题了,但是要额外的后台进程以及延迟问题,不予考虑. 2.数据库乐观锁,大致的意思是先查询库存,然后立马将库存+1,然后订 ...
- @Scope注解
@Scope(value=ConfigurableBeanFactory.SCOPE_PROTOTYPE)这个是说在每次注入的时候回自动创建一个新的bean实例 @Scope(value=Config ...
- Java集合框架(二)—— HashSet、LinkedHashSet、TreeSet和EnumSet
Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序.Set集合与Collection基本上完全一样,它没有提供任何额外的方法. Se ...