您的位置:首页 > 其它

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制作文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: