R语言之数据可视化
2016-05-21 09:50
309 查看
完整的数据分析流程
定义研究问题,定义理想数据集,确定能够获取什么数据,获取数据,清理数据探索性分析,统计分析/建模(机器学习)等
解释/交流结果(数据可视化),挑战结果,书写报告(Reproducible原则)
假设驱动
数据驱动
了解数据特征
数据基础观测,变量,数据矩阵
行叫做一次观测,列叫做一个变量值
变量的类型
数值(连续, 离散)
分类(无序, 有序)
变量间的关系(对应不同的可视化方法和统计分析方法)
通过考虑变量的类型,去选取不同的方法
特征和可视化
数据集中趋势的测量
均值,中位数,众数
数据分散趋势的测量
值域,方差,标准差,四分位距
mean(x),median(x),var(x)方差,sd(x)标准差,summary(x)求取所有
稳健统计量
是:中位数,四分位差(受极端值影响小)
否:均值,标准差,值域(受极端值影响大,不稳定)
单个变量的可视化
柱状图,点图
箱图(中位数,分位点,极端值),可以用于界限极端值
两个变量的关系的可视化
散点图: 方向,形状,强度,极端值
分类变量的特征和可视化
单个变量的可视化
频率表,条形图
两个分类变量的关系及可视化
关联表, 相对频率表(按列来看)
分段条形图, 相对频率分段条形图
马赛克图
一个分类变量,一个数值变量的关系
并排箱图
R的绘图系统
基本绘图系统始于空白帆布,需要事先规划
分两步,画图+修饰/添加,实质是执行一系列函数
适合二维变量
Lattice绘图系统
一次成图,一次函数调用
适合观测变量间的交互:在变量z的不同水平,y如何随x变化
ggplot2绘图系统
用语法作图
数据映射到几何客体(point/line/bar)的美学属性(color/shape/size)
可视为: 基本绘图+Lattice,可以自动处理标题/文字说明/空间等,但不允许通过添加注释进行修改
1.基本绘图系统
绘图函数(graphics包)
调用函数会启用一个图形设备,在设备上绘图
基本绘图系统+屏幕设备
plot(x,y,…)
重要参数: xlab/ylab/lwd/lty/pch(点的类型)/col(color)
par()
设置全局参数(作用于R中所有plot绘图)
重要参数: bg/mar(margin)/las(xlab的排版方式)/mfrow(按行填充)/mfcol
这些参数可以在每次plot之前进行修改
实例
``` par("bg") # "white" par("col") # "black" par("mar") # b l t r par("mfrow") # 1 row 1 col ```
hist(x) 柱状图
boxplot() 箱图
boxplot(Wind~Month,airquality) 并排箱图
plot(airquality$Wind, airquality$Temp)散点图
with(airquality, plot(Wind, Temp)) 借助with函数进行统一定制
with(subset(airquality, Month == 9), points(Wind, Temp, col = “red”) )
with(subset(airquality, Month %in% c(6,7,8)), points(Wind, Temp, col = “black”))
title(main = “sjming”) 添加标题到上图
fit <- lm(Temp~Wind, airquality) //拟合 abline(fit, lwd = 2) //加线
legend("topright", pch = 1, //添加图例 col = c("red", "blue", "black"), legend = c("Sep", "May", "Other"))
2.lattice绘图系统(lattic包)
xyplot 散点图
xyplot(y~x|f*g, data)
bwplot
histogram 柱状图
stripplot
dotplot 点图
splom
levelplot
contourplot
panel 用于控制每个面板内的绘图
lattice与base的区别
base绘图函数直接在图形设备上绘图
lattice绘图函数返回trellise类信息
打印函数真正执行了在设备上绘图
命令执行时,trellis类对象会被自动打印,所以看起来就像是lattice函数直接完成了绘图
grid包
实现独立于base的绘图系统,lattice包是基于lattic创建的,很少直接从grid包调用函数
实例
``` library(lattice) xyplot(Temp~Ozone, data = airquality) airquality$Month <- factor(airquality$Month) xyplot(Temp~Ozone | Month, data = airquality, layout = c(5, 1)) q <- xyplot(Temp~Wind, data = airquality) # use the variable, the result won't auto print print(q) set.seed(1) x <- rnorm(100) f <- rep(0:1, each = 50) y <- x + f - f*x + rnorm(100, sd = 0.5) f <- factor(f, labels = c("Group1", "Group2")) xyplot(y~x|f, layout = c(2,1)) xyplot(y~x|f, panel = function(x,y) { panel.xyplot(x, y) panel.abline(v = mean(x), h=mean(y), lty = 2) panel.lmline(x, y, col = "red") }) ```
3.ggplot2
层(layer)
Data, 感兴趣的变量
Aesthetics, x-axis, y-axis, color, fill
Geometries, point,line,histogram //几何客体
Facets, columns, rows //面
facet_grid(.~Month)
Statistics
Coordinates
Themes, non-data ink
theme_classis() //经典主题
绘图函数
qplot() 类似base的plot
实例
“`
library(ggplot2)
qplot(wind, Temp, data = airquality, color = Month)
airqualityMonth=factor(airqualityMonth = factor(airqualityMonth) # transform to Categorical variable
qplot(wind, Temp, data = airquality, color = Month)
# shape = Month, size = I(10)
# color = “red”
qplot(wind, Temp, data = airquality,
geom = c(“point”, “smooth”)) # geom means 几何客体
qplot(wind, Temp, data = airquality,
facets = Month ~.)
“`
ggplot()
调用ggplot()并不能绘图, 需要添加各种层
实例
``` ggplot(airquality, aes(Wind, Temp)) + geom_point(aes(color = factor(Month)), alpha = 0.4, size =5) //数据层+美学层+几何客体 //通过客体添加统计信息 stat_smooth() //控制颜色 library(RColorBrewer) myColors <- c(brewer.pal(5, "Dark2"), "black") display.brewer.par(5, "Dark2") ```
4.R语言颜色
RColorBrewer包
三类调色板, sequential(连续)/ diverging qualitative(颜色鲜明,分类变量)
调色板信息可与colorRamp/colorRampPalette结合使用
实例
``` # colorRamp par <- colorRamp(c("red", "blue")) par(0) # red par(1) # blue par(0.5) par(seq(0, 1, len = 10)) # colorRampPalette pal <- colorRampPalette(c("red", "yellow")) # 16 base-int pal(1) # "#FF0000" library(RColorBrewer) brewer.pal.info ```
5.R支持的图形设备
屏幕设备
文件设备
向量格式, pdf
位图, png
grDevices包, 包含了实现各种图形设备的代码
文件设备绘图无法在屏幕上看到
可同事打开多个设备, 但一次只能在一个设备上绘图
dev.cur() dev.set()
dev.copy(png, file = “”)
dev.off()
6.使用markdown制作文档
相关文章推荐
- MIPI介绍2
- 分享一个链接
- ubuntu源列表(清华,阿里,官方,选一即可)
- 存储过程系列之存储过程sql数据库调用和程序代码调用
- Intellij Idea 使用Maven构建Java Web项目 + Tomcat集成
- java容器:Collection中的Iterator和Map中的entrySet对比学习
- c++学习笔记(5)——关于三种内存分配方法
- vim初探
- 补间动画
- 理解mipi协议
- powerpoint中的自动缩略图效果
- 骨牌铺法
- releaseSession理解 (分页问题)
- Entity Framework and Enum Flags - Falafel Software Blog
- const 的理解和用法
- BSG白山极客挑战赛 B君的圆锥(数学)
- imx6 nand Flash 启动
- HDU——1213How Many Tables(并查集按秩合并)
- NYOJ 115 城市平乱
- NYOJ 独木舟上的旅行