R语言之数据可视化

完整的数据分析流程


  • 定义研究问题,定义理想数据集,确定能够获取什么数据,获取数据,清理数据
  • 探索性分析,统计分析/建模(机器学习)等
  • 解释/交流结果(数据可视化),挑战结果,书写报告(Reproducible原则)

假设驱动
数据驱动

了解数据特征

  1. 数据基础

    • 观测,变量,数据矩阵

      行叫做一次观测,列叫做一个变量值

    • 变量的类型
      • 数值(连续, 离散)
      • 分类(无序, 有序)
    • 变量间的关系(对应不同的可视化方法和统计分析方法)
      • 通过考虑变量的类型,去选取不同的方法
  2. 特征和可视化
    • 数据集中趋势的测量
      • 均值,中位数,众数
    • 数据分散趋势的测量
      • 值域,方差,标准差,四分位距
      • 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)
        airquality Month=factor(airquality Month) # 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制作文档

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值