R语言之数据可视化
Posted tonydandelion2014
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言之数据可视化相关的知识,希望对你有一定的参考价值。
完整的数据研究流程
第一部分
- 定义研究问题
- 定义理想的数据集
- 确定能够获取什么数据
- 获取数据
- 清理数据
第二部分
- 探索性的数据分析(数据可视化)
- 统计分析/建模(机器学习等)
第三部分
- 解释/交流结果(数据可视化)
- 挑战结果(分析过程是不是 有没有其他的可能)
- 书写报告(Reproducible原则)
变量类型
quantitative(数值变量)
- 可以进行加减乘除求平均等舒适运算
连续的:可以再给定区间内去任意的数值(无限的)
离散的:在给定的数值区间内取值(有限的)
数值变量的特征和可视化
1、数据集中趋势的测量(measures of center)
- 均值(mean)、中位数(median)、众数(mode)、方差、四十分位距
2、数据分散趋势的测量(measures of spread)
- 值域(range:max-min)、方差(variance)、标准差(standard variance)
> (x=c(1,9,2,8,3,9,4,5,7,6))q1`
[1] 1 9 2 8 3 9 4 5 7 6
> mean(x) #求均值
[1] 5.4
> median(x) #中位数
[1] 5.5
> var(x) #求方差
[1] 8.266667
> sd(x) #求标准差
[1] 2.875181
> summary(x) #介绍x的整体情况
Min. 1st Qu. Median Mean 3rd Qu. Max.
1.00 3.25 5.50 5.40 7.75 9.00
3、稳健统计量(robust statistics)
- 是:中位数、四分位差(受极端值的影响比较小)
- 否:均值、标准差、值域(受极端值的影响比较大)
4、一个变量的可视化
histogram(柱状图) dot plot(点状图分布)
在点图中,每个数据出现一次,点就相应的出现一次。
box plot(箱图)中位数、分位点、极端值
5、两个变量的关系
scatter plot(散点图):方向、形状、强度、极端值。
qualitative (分类变量)
- 取值空间有限,不能进行计算
无序的分类数据,不可比较。
有序的分类数据,顺序是有意义的。
进行数据分析的时候我们不只是关心一个变量,还要关心数据变量之间的关系。
变量间的不关系对应不同的可视化方法和统计分析方法。
分类变量的特征和可视化
- 分类变量的特征主要是频率
1、一个变量的可视化
frequency table(频率表)
bar plot(条形图)
2、两个变量的可视化
contingency table(关联表)
relative frequency(相对频率表)
3、两个分类变量的关系
分段条形图
相对频率分段条形图
mosaicplot(马赛克图)
4、一个分类变量和一个数值变量之间的关系
side-by-side box plot(并排箱图)
R语言的三大绘图系统
绘图函数(graphics包)
- plot/hist/boxplot/points/lines/text/title/axis
- 调用函数会启用一个图形设备(如果没有正在运行的图形设备)并在设备上绘图。
- 基本绘图系统 + 屏幕设备
Base Plotting System (基本绘图系统)
- 艺术家的调色板:绘图始于空白帆布
- 需要事先计划:直观地实时反映绘图和分析数据逻辑
- 两步 = 图 + 修饰/添加 = 执行一系列函数
- 适用于绘制2维图形(只存在两个变量的图形)
- 允许通过添加注释进行修改。
plot()
- plot(x,y,…)
- 重要参数xlab(x轴的名字)、ylab(y轴的名字)、lwd(线的宽度)、lty(线的种类)、pch(pch的取值决定图上点的类型)、col(颜色控制)
举例
hist(airquality$Wind,xlab = "风速 ") #柱状图
boxplot(airquality$Wind,xlab="Wind",ylab="Speed(miles/hour)") #单个箱型图不同月份,风速的分布情况。
boxplot(Wind~Month,airquality,xlab="Month",ylab="Speed(miles/hour)") #将风速按照月份进行箱型图排布
plot(airquality$Wind,airquality$Temp) #创建散点图
with(airquality,plot(Wind,Temp)) #设置散状图
title(main="Wind and Temp in NYC") #为刚刚创建的图设置标题
with(airquality,plot(Wind,Temp,main="Wind and Temp in NYC")) #这样直接把标题信息放到plot函数里面也是可以的。
with(airquality,plot(Wind,Temp, #先画好图的横纵轴和标题,再分三次添加数据。
main="Wind and Temp in NYC",
type="n"))
with(subset(airquality,Month==9), #设置九月份的数据为红色的点
points(Wind,Temp,col="red"))
with(subset(airquality,Month==5), #设置五月份的数据为蓝色的点
points(Wind,Temp,col="blue"))
with(subset(airquality,Month %in% c(6,7,8)), #设置六、七、八月份的数据为黑色的点
points(Wind,Temp,col="black"))
#在图上添加回归线来拟合数据
#第一步、拟合一个模型,这里用的是线性模型lm(因变量 ~ 自变量,数据集的名称)
fit=lm(Temp ~ Wind,airquality)
#第二步、添加到图里面去
abline(fit,lwd=2)
#为图里面的标志设置说明
legend("topleft",pch=1, #设置说面在图的左上角,pch=1设置说明的标志格式和图中一样都是空心的圆圈。
col=c("red","blue","black"), #设置颜色,对应画图的数据。
legend=c("Sep","May","Other")) #为颜色赋予含义
par()
用于设置全局的参数(作用于R中所有的plot绘图)
bg(背景)/mar(图像与边距的距离)/las(坐标的排版是横的还是竖的)/mfrow(先将当前的画板分成几几行几列再按照行来填充)/mfcol(先将当前的画板分成几几行几列再按照列来填充),这些参数可以在每次plot之前进行修改。
举例
#设置、查看全局变量
> par("bg") #查看背景背景
[1] "white"
> par("col") #查看图标的默认颜色
[1] "black"
> par("mar") #查看图表和边框的距离5.1到2.1,分别是下边距、左边距、上边距、右边距。
[1] 5.1 4.1 4.1 2.1
> par("mfcol") #查看面板被划分成了多少行多少列,按列填充
[1] 1 1
> par("mfrow") #查看面板被划分成了多少行多少列,按行填充
[1] 1 1
par(mfrow=c(2,1)) #设置面板分为两行一列,将温度和风速的柱状图填入面板。
hist(airquality$Temp)
hist(airquality$Wind)
par(mfcol=c(1,2)) #设置面板分为一行两列,将温度和风速的箱型图填入面板。
boxplot(airquality$Temp)
boxplot(airquality$Wind)
Lattice Plotting System(Lattice绘图系统)
- 绘图 = 只使用一次函数调用(一次成图)
- 特别适用于观测变量之间的交互:在变量Z的不同水平,变量y如何随变量x变化。
- 自动处理标题、文字说明、空间等信息。
- Lattice绘图系统的绘图函数主要在
Lattice系统特别适合呈现交互效果
- Lattice绘图系统的函数在lattice这个包里面。
- xyplot(散点图)/bwplot())/histogram(画柱状图)/stripplot()/dotplot()/splom()/levelplot()/contourplot()
Panel函数,用于控制每个面板内的绘图
grid包
- 实现了独立于base的绘图系统
- lattice包是基于grid 创建的,很少直接从grid包调函数
Latice和Base的区别
- Base绘图函数是直接在图形设备上绘图的
- lattice绘图函数返回trellis对象,命令执行的时候,trellis会被自动打印,所以看起来就像是lattice函数直接完成了绘图。
格式:xyplot(y ~ x | f * g, data ) y代表因变量,x代表自变量,f*g是分类变量,使得我们可以查看x和y在分类变量的不同水平下的状态。
举例
library(lattice) #先导入lattice包
xyplot(Temp ~ Ozone,data=airquality) #用lattice的xyplot函数创建散点图
airquality$Month=factor(airquality$Month) #将月份转化成分类变量
xyplot(Temp ~ Ozone | Month,data=airquality,
layout=c(5,1)) #设置一行五列,不同的列代表不同的月份下臭氧含量和温度的关系
q=xyplot(Temp ~ Wind,data=airquality) #先将lattice绘图函数返回trellis对象赋值给q
print(q) #再将q打印出来
#用Lattice绘图系统体现分类变量对数值变量分布的影响
set.seed(1) #设置种子点,才能生成一样的随机数。只要是使用随机数,就一定要设置种子点。
x=rnorm(100) #生成100个正太分布的随机数
> (f=rep(0:1,each=50))
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[51] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
y=x+f-x*f+rnorm(100,sd=0.5) #让x与y之间的关系与f有交互,加入一些误差,使得点不在一条直线上,看起来像是些随机数据。
f=factor(f,labels=c("Group1","Group2")) #将f设置为分类变量
xyplot( y~x | f,layout=c(2,1)) #设置为一行两列
xyplot(y~x | f,panel=function(x,y)
panel.xyplot(x,y) #调用默认的panel函数
panel.abline(v=mean(x),h=mean(y),lty=2) #在x均值对应的地方画一条垂直(v)的直线,在y的均值对应的地方画一条水平(h)的直线。
panel.lmline(x,y,col="red") #调用lmline函数来在面板中添加回归线,用来拟合x和y的关系。
})
ggplot2 Plotting System(ggplot2绘图系统)
- The Grammar of Graphics
- 图:动词、名词、形容词等
数据映射到几何客体(points/lines/bars)的美学属性(颜色/形状/大小)上
基本绘图系统 + Lattice绘图系统 = ggplot2绘图系统
自动处理标题、文字说明、空间等,但是也允许通过添加注释进行修改。
层
- Data 感兴趣的变量(data frame)
- Aesthetics 与美学属性相关的内容 x-axis/y-axis/color(背景颜色)/fill(填充的颜色)/size(大小)/lables(标签)/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
- ggplot2最基础的三个层分别是数据层、几何客体层、美学层
绘图函数
- qplot()
- 类似于Base系统中的plot(),参数包含aesthetics(美学特征)/geom(几何客体)/facet(面)…
- 隐藏了绘图的实现细节
- ggplot()
- 是 ggplot2绘图系统的核心,可以实现qplot函数无法实现的功能。
- 调用ggplot()本身并不能实现绘图,要在其基础上添加层(如geom_point())才可以实现真正的绘图。
- ggplot(绘图所用到的数据集,美学相关的层)
- qplot()
qplot举例
library(ggplot2)
qplot(Wind,Temp,data=airquality)
qplot(Wind,Temp,data=airquality,color=Month) #设置color=Month,可以得到不同月份的数据点在颜色差异上的变化分布。
airquality$Month=factor(airquality$Month) #只有使用factor()函数,将月份转变为分类变量,才能使得不同月份的数据对应不同颜色的点。
qplot(Wind,Temp,data=airquality,color=Month) #设置数据的颜色按照月份进行分类
qplot(Wind,Temp,data=airquality,color=I("red")) #设置所有数据点的颜色都是红色
qplot(Wind,Temp,data=airquality,shape=Month) #设置shape=Month,可以得到不同月份的数据点在形状查已上的变化分布。
qplot(Wind,Temp,data=airquality,size=Month) #设置size=Month,可以得到不同月份的数据点在尺寸大小差异上的变化分布。
qplot(Wind,Temp,data=airquality,size=I(5),
xlab="Wind(mph)",ylab="Temperature",
main="Wind vs. Temp")
qplot(Wind,Temp,data=airquality,size=Month,color=Month,
xlab="Wind(mph)",ylab="Temperature",
main="Wind vs. Temp")
qplot(Wind,Temp,data=airquality,color=Month,
geom=c("point","smooth")) #geom的意思是几何客体,它的赋值包含两个,第一个是点,第二个是smooth。smooth会给你一条根据这些点拟合出来的一条线。
#上述两行代码会得到一个有阴影的带有回归线的图,阴影部分就是这个图的置信区间。
qplot(Wind,Temp,data=airquality,
facets = Month ~.) #把面板分成了5行1列,每一行代表了月份的一个数据分布水平。
qplot(Wind,Temp,data=airquality,
facets = .~ Month) #把面板分成了1行5列,每一列代表了月份的一个数据分布水平。
qplot(Wind,data=airquality) #qplot传进去是两个参数自动生成散点图,传进去一个参数生成按照频率分布的柱状图。
qplot(Wind,data=airquality,facets=Month ~.) #得到一个5行1列的柱状图矩阵,每行对应一个月份。
qplot(y=Wind,data=airquality) #只传进去y轴的数据时,还是只画一个散点图,区别在于,会按照风速出现的顺序来绘图。也就是说在下轴的最左边的值是最早出现的值,最右边的值是最晚出现的值。
qplot(Wind,data=airquality,fill=Month) #得到一个累加的柱状图,不同的月份用不同的颜色表示。
qplot(Wind,data=airquality,geom="density") #设置geom="density"会得到风速的频率分布的轮廓线
qplot(Wind,data=airquality,geom="density",color=Month) #再设置color=Month,可以得到不同月份风速数据的频率分布轮廓线。
qplot(Wind,data=airquality,geom="dotplot") #设置geom="dotplot",得到的是点图。
ggplot2举例
library(ggplot2)
ggplot(airquality,aes(Wind,Temp)) + geom_point() #ggplot2有数据层、美学层、几何客体层,ggplot(airquality,aes(Wind,Temp))是数据层和美学层。
ggplot(airquality,aes(Wind,Temp))+
geom_point(color="steelblue",alpha=0.4,size=5) #color="steelblue",alpha=0.4,size=5 设置半透明的,大小为5的,蓝色的点。
ggplot(airquality,aes(Wind,Temp))+
geom_point(aes(color=factor(Month)),alpha=0.4,size=5) #先将 Month转换成分类变量,因为是把数据映射到color这个美学属性上,所以要把color=factor(Month)写到aes函数里面。
ggplot(airquality,aes(Wind,Temp))+
geom_point()+
geom_smooth() #数据层、几何层,使用几何客体来添加统计学信息
ggplot(airquality,aes(Wind,Temp))+
geom_point()+
stat_smooth() #也可以使用stat_smooth()统计层直接添加统计信息
ggplot(airquality,aes(Wind,Temp))+
stat_smooth(method="lm",se=FALSE) #几何客体层和统计层可以二选一,通过method方法可以设置线性回归的方法,设置se=FALSE可以关掉置信区间的活跃值。
ggplot(airquality,aes(Wind,Temp))+
stat_smooth(method="lm",se=FALSE,aes(col=Month)) #在stat_smooth(统计层)中设置aes(col=Month)美学属性,为每个月份的数据拟合一条回归线。
ggplot(airquality,aes(Wind,Temp,col=factor(Month)))+
stat_smooth(method="lm",se=FALSE) #在ggplot函数中设置col=factor(Month),在绘制stat_smooth(统计层)的时候,就会对每一个月份的数据进行处理。
ggplot(airquality,aes(Wind,Temp,col=factor(Month),group=1))+
geom_point()+
stat_smooth(method="lm",se=FALSE) #在ggplot函数的aes参数中设置group=1,在绘制stat_smooth(统计层)的时候,所有月份的数据都会绘制成一条直线,基于整体进行拟合。但是在散点层geom_point(),数据仍然是有区别的。
ggplot(airquality,aes(Wind,Temp,col=factor(Month)))+
geom_point()+
stat_smooth(method="lm",se=FALSE,aes(group=1))+
stat_smooth(method="lm",se=FALSE) #在第一个stat_smooth(统计层)的aes参数中设置col=factor(Month),这个stat_smooth(统计层)会受影响,下一个stat_smooth(统计层)不会受影响。
#如何主动设置颜色
library(RColorBrewer) #加载调色板包
myColors=c(brewer.pal(5,"Dark2"),"black") #5个月份的数据拟合曲线加上基于整体的数据拟合曲线,一共有6条拟合曲线。从Dark2这个调色板中取出5个颜色。
display.brewer.pal(5,"Dark2") #查看颜色
ggplot(airquality,aes(Wind,Temp,col=factor(Month)))+
geom_point()+
stat_smooth(method="lm",se=FALSE,aes(group=1,col="All"))+ #在对于所有数据进行拟合的统计层函数中,aes参数设置col="All",在之后生成的图例中就会多显示一行All。
stat_smooth(method="lm",se=FALSE)+
scale_color_manual("Month",values=myColors) #设置月份需要使用的颜色是myColor中的那几种颜色
#如何将不同的月份画在不同的面板上
library(RColorBrewer) #加载调色板包
myColors=c(brewer.pal(5,"Dark2"),"black") #5个月份的数据拟合曲线加上基于整体的数据拟合曲线,一共有6条拟合曲线。从Dark2这个调色板中取出5个颜色。
display.brewer.pal(5,"Dark2") #查看颜色
ggplot(airquality,aes(Wind,Temp,col=factor(Month)))+
geom_point()+
stat_smooth(method="lm",se=FALSE)+
scale_color_manual("Month",values=myColors)+ #设置月份需要使用的颜色是myColor中的那几种颜色
#facet_grid(.~Month) #将不同的月份画在不同的面板上一行五列
facet_grid(Month~.) #将不同的月份画在不同的面板上一列五行
#如何设置主题
ggplot(airquality,aes(Wind,Temp))+
stat_smooth(method="lm",se=FALSE,aes(col=Month))+
theme_classic()
R语言的绘图颜色
- grDevice包
- colorRamp() & colorRampPalrttr()
- 颜色的名字可以通过colors()来获取
RColorBrewer包
- 三类调色板信息sequential/diverging/qualitative
- sequential(adj. 连续的;相继的;有顺序的),颜色从一个极端过度到另一个极端,适合呈现顺序数据。
- diverging(adj. 发散的;分歧的;岔开的(等于divergent)),两边的取值鲜艳,中间的取值很淡,适合凸显处于极端的数值,而不是处在中间部位的数值。适合强调高低对比。
- qualitative(adj. 定性的;质的,性质上的)
- 调色板信息可以与colorRamp/colorRampPalette结合使用,不同颜色之间的对比很鲜明,适合用于呈现分类变量。
举例
> #R语言的颜色
> pal=colorRamp(c("Red","blue"))
> pal(0) #red
[,1] [,2] [,3]
[1,] 255 0 0
> pal(1) #bule
[,1] [,2] [,3]
[1,] 0 0 255
> pal(0.5)
[,1] [,2] [,3]
[1,] 127.5 0 127.5
> pal(seq(0,1,len=10)) #等间距获得10个RGB数值。
[,1] [,2] [,3]
[1,] 255.00000 0 0.00000 #第一行是红色
[2,] 226.66667 0 28.33333
[3,] 198.33333 0 56.66667
[4,] 170.00000 0 85.00000
[5,] 141.66667 0 113.33333 #在两个极端数值之间等间距取值得到的数值
[6,] 113.33333 0 141.66667
[7,] 85.00000 0 170.00000
[8,] 56.66667 0 198.33333
[9,] 28.33333 0 226.66667
[10,] 0.00000 0 255.00000 #最后一行是蓝色
#colorRamPalette用法
> pal=colorRampPalette(c("red","yellow"))
> pal(1) #返回颜色16进制的表示
[1] "#FF0000"
> pal(2)
[1] "#FF0000" "#FFFF00"
> pal(10) #返回10个数,其中第一个数是红色,最后一个数是黄色,其他的数处于这两个数的中间。
[1] "#FF0000" "#FF1C00" "#FF3800" "#FF5500" "#FF7100" "#FF8D00" "#FFAA00" "#FFC600" "#FFE200" "#FFFF00"
> library(RColorBrewer)
> brewer.pal.info #查看调色板的信息
maxcolors category colorblind
BrBG 11 div TRUE #maxcolors对应在面板上最多可以使用的颜色的数量,比如BrBG就是11个
PiYG 11 div TRUE #catagrory对应颜色在哪个调色板
PRGn 11 div TRUE #colorblind对应这个调色板对色盲人士是否是友好的。
PuOr 11 div TRUE
RdBu 11 div TRUE
RdGy 11 div FALSE
RdYlBu 11 div TRUE
RdYlGn 11 div FALSE
Spectral 11 div FALSE
Accent 8 qual FALSE #Accent最多可以使用的颜色的数量是8个
Dark2 8 qual TRUE
Paired 12 qual TRUE
Pastel1 9 qual FALSE
Pastel2 8 qual FALSE
Set1 9 qual FALSE
Set2 8 qual TRUE
Set3 12 qual FALSE
Blues 9 seq TRUE
BuGn 9 seq TRUE
BuPu 9 seq TRUE
GnBu 9 seq TRUE
Greens 9 seq TRUE
Greys 9 seq TRUE
Oranges 9 seq TRUE
OrRd 9 seq TRUE
PuBu 9 seq TRUE
PuBuGn 9 seq TRUE
PuRd 9 seq TRUE
Purples 9 seq TRUE
RdPu 9 seq TRUE
Reds 9 seq TRUE
YlGn 9 seq TRUE
YlGnBu 9 seq TRUE
YlOrBr 9 seq TRUE
YlOrRd 9 seq TRUE
> clos=brewer.pal(3,"Blues") #从RColorBrewer的Greens调色板中取三个颜色。
> pal=colorRampPalette(clos) #把clos传给colorRampPalette调色板,返回值存在pal这个变量中。
> display.brewer.pal(3,"Reds") #使用display函数查看brewer.pal(3,"Reds")取到的是什么颜色。pal(20)就是在这3个颜色的渐变色之间进行取值。
> image(volcano,col=pal(20)) #调用image这个函数。数据集是volcano,颜色col设置成pal(20),以传给colorRampPalette的三个颜色为端点,在这三个端点之间进行取值。加上这3个端点一共有20个颜色。image函数的数据集只能是矩阵型的数据。
> display.brewer.pal(9,"YlGnBu") #display.brewer.pal(取得颜色的个数,"调色板名称")可以查看哪几个颜色从这个调色板中被取出来。
图形设备
屏幕设备(探索性数据分析常用):电脑屏幕
- windows() on Windows/quartz() on Mac/xll() on Unix or Linux 使用不同的操作系统,就需要使用调用相应操作系统的函数。
文件设备(打印/文章图常用)
-向量格式(vector format):PDF 易于调整尺寸、便携的,不易于呈现大量的数据点,适合存储线条图
-位图(bitmap format):PNG/JPGE/TIFF/BMPgrDevices包
- 包含了实现各种图形设备的代码
- ?Devices 如PDF/PNG/BMP
生成图形的两种途径
- 调用绘图函数(默认使用屏幕)—–>屏幕设备显示图形—–>进一步修饰图形
- 明确指定图形设备—–>调用绘图函数(如果指定的是文件设备则无法再屏幕上看到图形)—–>进一步修饰图形—–>关闭图形设备,使用dev.off这个函数。
- 可以同时打开多个设备,但是一次只能在一个设备上绘图。
- dev.cur()函数,找到当前活跃的设备/dev.set()设置指定设备为活跃设备。
拷贝图形
- 多个图形之间的相互拷贝:dev.copy
- 拷贝到PDF文件:dev.copy2pdf
- 注意:拷贝的结果可能和原图是有出入的,因为copy的过程,不是一个完全一一对应的过程
举例
#如何把图画到文件设备中
pdf(file="MyFig.pdf") #使用pdf函数,设置file参数为目标文件名
with(airquality,plot(Wind,Temp,main="Wind and Temp in NYC"))
dev.off() #关闭设备
getwd() #查看工作路径,去找写好的文件。
#如何进行设备间的复制。
pdf(file="MyFig.pdf")
with(airquality,plot(Wind,Month,main="Wind and Temp in NYC")) #先得到一个pdf文件
dev.copy(png,file="MyCopy.png") #再复制成png文件
dev.off() #关闭设备
探索性数据分析
目的
- 了解数据特征、找到数据中的模式、形成分析策略。
- 图与数字之间相互验证、帮助发现错误、用于交流结果。
特点
- 快速的、呈现在屏幕设备上的。
- 不需要过分注重你的图是否漂亮
- 请注重六大作图原则
- 凸显比较(和谁比较)
- 凸显机制(因果/机制/解释)
- 凸显多元性(>2个变量、逃离扁平)
- 整合证据,整合文字、数字、图、表等,用多种方式显示数据特征,不能让工具主宰分析。
- 使用适当的图标、尺度等,完备性、一图胜千言。
- 内容是王道 > 作图漂亮
- 提问方式:操作系统、版本、哪一步产生了错误、预期是什么、得到的结果是什么、其他有用的信息。
如何制作和发布报告
Replication vs. Reproducible Research
- Replication(可重复)
- 独立的研究者/数据/分析方法/工具得到一致的证据
缺点:有些研究是不能被重复的,没钱/没时间/没机会/独特性
Reproducible Research(可再现研究)
- 让数据和分析方法(code)透明
- 使用你的数据和分析方法得到你的结果
- R MarkDown,Reproducible Research(可再现研究工具)
- 人可以读懂的语言是:文字(目的/方法等) MarkDown
- 机器可以读懂的语言是:code(加载数据/计算结果、生成图和表)
- R Markdown:R code + Markdown
- R Markdown—–>Markdown—–>html
使用R MarkDown来生成相应的报告文档
- 在R Studio里面点击file –> new file –>R Markdown –>输入报告的名字、作者,选择输出格式。–>
- 点击Kint HTML查看效果
- 可以在R MarkDown里面写上R命令,这样R MarkDown生成的报告也是会有相应的命令的结果出现。
发布报告
- 点击Kint HTML查看效果—–>在弹出的预览框的右上角有 Pulish按钮,点击即可在RPubs上发布数据了。
注意事项
Do
- 研究一个有意思/有意义的问题
- 教会电脑做事情
- 使用版本控制(GitHub)
- 注明软件使用环境
- 在判断随机数这种该设置种子点的时候,是否设置了种子点。seed
- 保持全局性,知道处于分析的哪一个阶段。
Do Not
- 手工操作
- 只使用GUI点来点去(注意按钮背后调用的函数)
- 只保存输出结果(应该保存数据和整个过程)
- 信息层级化
信息层级化
举例
- 科研论文/报告
- 标题/作者和单位/摘要
- 前言/方法/结果/讨论
- 补充材料(code/data/details)
相关网站
以上是关于R语言之数据可视化的主要内容,如果未能解决你的问题,请参考以下文章