R语言可视化
R语言可视化
完整的数据分析流程
1.定义研究问题,定义理想的数据集,确定能够获取什么数据,获取数据,清理数据
2.探索性分析(数据可视化),统计分析/建模(机器学习)
3.解释/交流结果(数据可视化),挑战结果(有没有其他可能),书写报告
数值变量的特征和可视化
数据集中趋势的测量:均值(mean),中位数(median),众数(mode)
数据分散趋势的测量:值域(range),方差(variance),标准差(standard variance),四分位距 (interquartile range)
有关函数:方差 var(x) 标准差sd(x)
稳健统计量(受极端值影响小)
是:中位数,四分位差
否:均值,标准差,值域
箱图
一个数值变量可以用:柱状图,点图
两个数值变量可以用:散点图
分类变量的特征和可视化
一个分类变量的可视化:频率表,条形图
两个分类变量的可视化:关联表,相对频率表,分段条形图,相对频率分段条形图,马赛克图
一个分类变量,一个数值变量:分类箱图
R三大绘图系统
- 基本绘图系统(Base Plotting System)
需要事先计划;直观地实时反映绘图和分析数据的逻辑
图+修饰
适用于绘制2D图
- Lattice绘图系统(Lattice Plotting System)
一次成图
适用于观测变量间的交互:在变量z的不同水平,变量y如何随变量x变化
- ggplot2绘图系统(ggplotw Plotting System)
数据映射到几何客体(点/线/条)的(颜色/大小/形状)
相当于 基本绘图系统+Lattice绘图系统
自动处理标题/文字说明/空间等
允许通过添加注释进行修改
基本绘图系统
绘图函数(graphics包)
plot / hist(条形图) / boxplot(箱图) / points / lines / text / title / axis(坐标轴)
plot()
plot(x,y,...)
重要参数:xlab(坐标轴标签) / ylab / lwd(线宽) / lty(线类型) / pch(点类型) / col(颜色)
par()
?par 内容很多
用于设置全局参数
bg(背景颜色) / mar(边距) / las(标签横竖) / mfrow / mfcol(把当前面板分成几行几列,按行/列填充,多个图的意思)
title()
title(main = "Name") 标题名称
lm()
fit <- lm(Temp ~ Wind, airquality) 线性回归线
abline(fit,lwd = 2) 往图里加线,宽度为2
legend("topright", pch = 1, col = c("red","blue","black"),legend = c("Sep","May","Other"))
添加注释 右上角 点类型为1 对应关系
Lattice绘图系统
lattice包
- xyplot / bwplot / histogram / stripplot / dotplot / splom / levelplot / contourplot
- 格式 xyplot(y~x | f *g ,data)
- panel函数,用于控制每个面板内的绘图
grid包
- 实现了独立于base的绘图系统
- lattice包基于grid包
Lattice与Base的重要区别
Base绘图函数直接在图形设备上绘图
Lattice绘图函数返回trellis类对象,打印函数将其打印出来,执行命令时自动打印。
library(lattice) 加载包 xyplot(Temp~Ozone,data=airquality) 看Temp和Ozone之间的关系,airquality是R自带的数据集 airquality$Month <- factor(airquality$Month) 把月份设置成分类变量 xyplot(Temp~Ozone | Month, data=airquality,layout=c(5,1)) 看不同月份下两者的关系
粉色是月份,纵坐标是温度,横坐标是臭氧含量。
panel 例子 panel.abline(v=mean(x),h=mean(y), lty=2) 加线,v是水平线,h是竖直线,线类型为2 panel.lmline(x,y,col="red") 加线性回归线,颜色红色
ggplot2绘图系统(主要使用这个)
- 层
Data(数据) | 感兴趣的变量(data frame) |
---|---|
Aesthetics(美学属性) | x-axis / y-axis / color / fill / size / labels / alpha / shape / linear width / linear type |
Geometries(几何客体) | point / line / histogram / bar / boxplot |
Facets(面板) | columns / rows |
Statistics(统计) | binning / smoothing / descriptive / inferential |
Coordinates(坐标系) | cartesian / fixed / polar / limits |
Themes(主题) | non-data ink |
- 绘图函数
qplot()
类似于Base系统的plot(),参数包含aesthetics / geom / facet ...
隐藏了绘图实现的细节
qplot(Wind, Temp, data=airquality, color=Month) 可以自己比对这几种的不同之处 airquality$Month <- factor(airquality$Month) 把月份设置成分类变量 qplot(Wind, Temp, data=airquality, color=Month) 不同月份就变成了不同颜色,之 前是渐变色 qplot(Wind, Temp, data=airquality, color=I("red")) 统一红色 qplot(Wind, Temp, data=airquality, shape=Month) 或者size=Month qplot(Wind, Temp, data=airquality, color=I("red"),xlab="Wind(mph)", ylab="Temperature", main="Wind vs. Temp") 可以给坐标轴加标签,给图加标题 qplot(Wind, Temp, data=airquality, color=Month, geom = c("point","smooth")) 几何客体,smooth是回归分析(图1) qplot(Wind, Temp, data=airquality, facets = .~Month) ~左右可以互换,行和列会互换,面 板中显示多个图,按照月份分开 qplot(Wind, data = airquality) 自动选择柱状图 qplot(y=Wind, data = airquality) 生成散点图,横坐标是按Wind数据 的顺序 qplot(Wind, data = airquality, fill = Month) (图2) qplot(Wind, data = airquality, geom = "density",color=Month) density频率分布的轮廓线(图3) 也可以改成dotplot等
图一
图二
图三
ggplot()
核心,可以实现qplot()无法实现的功能
调用ggplot()本身并不能实现绘图,要在其基础上添加层(如geom_point() )才可以
ggplot(airquality,aes(Wind,Temp)) + 数据层,美学属性层 + geom_point(aes(color=factor(Month)),alpha=0.4,size=5) 几何客体层(颜色以月份分类,透 明度为0.4,大小为5) *图一 ggplot(airquality,aes(Wind,Temp)) + geom_point() + 这一层去掉的话就不显示点 stat_smooth() 回归分析 *图二 ggplot(airquality,aes(Wind,Temp)) + stat_smooth(method="lm",se=FALSE,aes(col=factor(Month))) 线性回归,按月份分开,se是 置信区间(上图阴影区域)*图三 ggplot(airquality,aes(Wind,Temp,col=factor(Month))) + geom_point() + stat_smooth(method="lm",se=FALSE,aes(group=1,col="all")) + 对所有数据做一条回归线 stat_smooth(method="lm",se=FALSE) *图四 library(RColorBrewer) myColors <- c(brewer.pal(5,"Dark2"),"black") 自己来控制颜色 display.brewer.pal(5,"Dark2") 显示某类颜色 display.brewer.all() 显示所有调色板的颜色 ggplot(airquality,aes(Wind,Temp,col=factor(Month))) + geom_point() + stat_smooth(method="lm",se=FALSE,aes(group=1,col="ALL")) + stat_smooth(method="lm",se=FALSE) + scale_color_manual("Month",values = myColors) 这样就能自己控制颜色 *图五 ggplot(airquality,aes(Wind,Temp,col=factor(Month))) + geom_point() + stat_smooth(method="lm",se=FALSE) + facet_grid(.~Month) 面板按月份分开 *图六 + theme_classic() 加这层改变主题
图一
图二
图三
图四
图五
图六
R color
pal <- colorRamp(c("red","blue")) 以红,蓝为端点 pal(0) 0 是红色 pal(1) 1 是蓝色 pal(seq(0,1,len=10)) 从中间等距取10个数,颜色渐变 pal <- colorRampPalette(C("red","yellow")) 以红,黄为端点 pal(1) 取一个颜色,红色 pal(10) 取十个颜色,红到黄渐变 library(RColorBrewer) brewer.pal.info 查看这个调色板的信息 display.brewer.all() 这个可以直接看调色板所有颜色 cols <- brewer.pal(3,"Greens") 从Greens这个组里取3个颜色 pal <- colorRampPalette(cols) 以这3个颜色为端点 image(volcano,col = pal(20)) 取20个渐变颜色,数据集为volcano, 画图像
完整的数据分析流程
1.定义研究问题,定义理想的数据集,确定能够获取什么数据,获取数据,清理数据2.探索性分析(数据可视化),统计分析/建模(机器学习)3.解释/交流结果(数据可视化),挑战结果(有没有其他可能),书写报告数值变量的特征和可视化数据集中趋势的测量:均值(mean),中位数(median),众数(mode)数据分散趋势的测量:值域(range),方差(variance),标准差(standard variance),四分位距 (interquartile range)有关函数:方差 var(x) 标准差sd(x)稳健统计量(受极端值影响小)是:中位数,四分位差否:均值,标准差,值域箱图一个数值变量可以用:柱状图,点图两个数值变量可以用:散点图分类变量的特征和可视化一个分类变量的可视化:频率表,条形图两个分类变量的可视化:关联表,相对频率表,分段条形图,相对频率分段条形图,马赛克图一个分类变量,一个数值变量:分类箱图
R三大绘图系统
- 基本绘图系统(Base Plotting System)
需要事先计划;直观地实时反映绘图和分析数据的逻辑图+修饰适用于绘制2D图
- Lattice绘图系统(Lattice Plotting System)
一次成图适用于观测变量间的交互:在变量z的不同水平,变量y如何随变量x变化
- ggplot2绘图系统(ggplotw Plotting System)
数据映射到几何客体(点/线/条)的(颜色/大小/形状)相当于 基本绘图系统+Lattice绘图系统自动处理标题/文字说明/空间等允许通过添加注释进行修改
基本绘图系统
绘图函数(graphics包)plot / hist(条形图) / boxplot(箱图) / points / lines / text / title / axis(坐标轴)plot()plot(x,y,...)重要参数:xlab(坐标轴标签) / ylab / lwd(线宽) / lty(线类型) / pch(点类型) / col(颜色)par()?par 内容很多用于设置全局参数bg(背景颜色) / mar(边距) / las(标签横竖) / mfrow / mfcol(把当前面板分成几行几列,按行/列填充,多个图的意思)title()title(main = "Name") 标题名称lm()fit <- lm(Temp ~ Wind, airquality) 线性回归线abline(fit,lwd = 2) 往图里加线,宽度为2legend("topright", pch = 1, col = c("red","blue","black"),legend = c("Sep","May","Other"))添加注释 右上角 点类型为1 对应关系
Lattice绘图系统
lattice包
- xyplot / bwplot / histogram / stripplot / dotplot / splom / levelplot / contourplot
- 格式 xyplot(y~x | f *g ,data)
- panel函数,用于控制每个面板内的绘图
grid包
- 实现了独立于base的绘图系统
- lattice包基于grid包
Lattice与Base的重要区别Base绘图函数直接在图形设备上绘图Lattice绘图函数返回trellis类对象,打印函数将其打印出来,执行命令时自动打印。
library(lattice) 加载包 xyplot(Temp~Ozone,data=airquality) 看Temp和Ozone之间的关系,airquality是R自带的数据集 airquality$Month <- factor(airquality$Month) 把月份设置成分类变量 xyplot(Temp~Ozone | Month, data=airquality,layout=c(5,1)) 看不同月份下两者的关系
粉色是月份,纵坐标是温度,横坐标是臭氧含量。
panel 例子 panel.abline(v=mean(x),h=mean(y), lty=2) 加线,v是水平线,h是竖直线,线类型为2 panel.lmline(x,y,col="red") 加线性回归线,颜色红色
ggplot2绘图系统(主要使用这个)
- 层
Data(数据) | 感兴趣的变量(data frame) |
---|---|
Aesthetics(美学属性) | x-axis / y-axis / color / fill / size / labels / alpha / shape / linear width / linear type |
Geometries(几何客体) | point / line / histogram / bar / boxplot |
Facets(面板) | columns / rows |
Statistics(统计) | binning / smoothing / descriptive / inferential |
Coordinates(坐标系) | cartesian / fixed / polar / limits |
Themes(主题) | non-data ink |
- 绘图函数
qplot()类似于Base系统的plot(),参数包含aesthetics / geom / facet ...隐藏了绘图实现的细节
qplot(Wind, Temp, data=airquality, color=Month) 可以自己比对这几种的不同之处 airquality$Month <- factor(airquality$Month) 把月份设置成分类变量 qplot(Wind, Temp, data=airquality, color=Month) 不同月份就变成了不同颜色,之 前是渐变色 qplot(Wind, Temp, data=airquality, color=I("red")) 统一红色 qplot(Wind, Temp, data=airquality, shape=Month) 或者size=Month qplot(Wind, Temp, data=airquality, color=I("red"),xlab="Wind(mph)", ylab="Temperature", main="Wind vs. Temp") 可以给坐标轴加标签,给图加标题 qplot(Wind, Temp, data=airquality, color=Month, geom = c("point","smooth")) 几何客体,smooth是回归分析(图1) qplot(Wind, Temp, data=airquality, facets = .~Month) ~左右可以互换,行和列会互换,面 板中显示多个图,按照月份分开 qplot(Wind, data = airquality) 自动选择柱状图 qplot(y=Wind, data = airquality) 生成散点图,横坐标是按Wind数据 的顺序 qplot(Wind, data = airquality, fill = Month) (图2) qplot(Wind, data = airquality, geom = "density",color=Month) density频率分布的轮廓线(图3) 也可以改成dotplot等
图一图二图三ggplot()核心,可以实现qplot()无法实现的功能调用ggplot()本身并不能实现绘图,要在其基础上添加层(如geom_point() )才可以
ggplot(airquality,aes(Wind,Temp)) + 数据层,美学属性层 + geom_point(aes(color=factor(Month)),alpha=0.4,size=5) 几何客体层(颜色以月份分类,透 明度为0.4,大小为5) *图一 ggplot(airquality,aes(Wind,Temp)) + geom_point() + 这一层去掉的话就不显示点 stat_smooth() 回归分析 *图二 ggplot(airquality,aes(Wind,Temp)) + stat_smooth(method="lm",se=FALSE,aes(col=factor(Month))) 线性回归,按月份分开,se是 置信区间(上图阴影区域)*图三 ggplot(airquality,aes(Wind,Temp,col=factor(Month))) + geom_point() + stat_smooth(method="lm",se=FALSE,aes(group=1,col="all")) + 对所有数据做一条回归线 stat_smooth(method="lm",se=FALSE) *图四 library(RColorBrewer) myColors <- c(brewer.pal(5,"Dark2"),"black") 自己来控制颜色 display.brewer.pal(5,"Dark2") 显示某类颜色 display.brewer.all() 显示所有调色板的颜色 ggplot(airquality,aes(Wind,Temp,col=factor(Month))) + geom_point() + stat_smooth(method="lm",se=FALSE,aes(group=1,col="ALL")) + stat_smooth(method="lm",se=FALSE) + scale_color_manual("Month",values = myColors) 这样就能自己控制颜色 *图五 ggplot(airquality,aes(Wind,Temp,col=factor(Month))) + geom_point() + stat_smooth(method="lm",se=FALSE) + facet_grid(.~Month) 面板按月份分开 *图六 + theme_classic() 加这层改变主题
图一图二图三图四图五图六
R color
pal <- colorRamp(c("red","blue")) 以红,蓝为端点 pal(0) 0 是红色 pal(1) 1 是蓝色 pal(seq(0,1,len=10)) 从中间等距取10个数,颜色渐变 pal <- colorRampPalette(C("red","yellow")) 以红,黄为端点 pal(1) 取一个颜色,红色 pal(10) 取十个颜色,红到黄渐变 library(RColorBrewer) brewer.pal.info 查看这个调色板的信息 display.brewer.all() 这个可以直接看调色板所有颜色 cols <- brewer.pal(3,"Greens") 从Greens这个组里取3个颜色 pal <- colorRampPalette(cols) 以这3个颜色为端点 image(volcano,col = pal(20)) 取20个渐变颜色,数据集为volcano, 画图像