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函数来在面板中添加回归线,用来拟合xy的关系。
})

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举例

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/BMP

  • grDevices包

    • 包含了实现各种图形设备的代码
    • ?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)

相关网站

  • 欢迎来到kaggle挑战自我。
  • RPubs上面发布,查看报告。

以上是关于R语言之数据可视化的主要内容,如果未能解决你的问题,请参考以下文章

R语言之数据可视化 - R的绘图颜色

R语言随机森林RandomForest逻辑回归Logisitc预测心脏病数据和可视化分析|附代码数据

R语言之数据可视化

数据可视化应用绘制森林图(附Python和R语言代码)

第二篇:R语言数据可视化之数据塑形技术

R语言数据可视化之散点图