美文网首页R可视化和ggplot2
ggplot2:第五章-工具箱(一)

ggplot2:第五章-工具箱(一)

作者: 小杜的生信筆記 | 来源:发表于2019-09-27 10:52 被阅读0次

    Date: 27th september 2019
    -本章内容较多,其相对较难,因此,我们将会分为几部分进行记录。

    5.1 简介(略)

    5.2 图层叠加的总体策略

    图层有三种用途
    1)用以展示数据本身
    2)用以展示数据的统计摘要
    3)用以添加额外的元数据

    5.3 基本图形类型

    geom_area() 用于绘制面积图
    geom_bar() 用于绘制条形图
    geom_line() 用于绘制线条图
    geom_point() 用于绘制散点图
    geom_polygon() 用于绘制多边图
    geom_text() 可以指定点添加标签。他是唯一一个额外图形属性的:它需指定label参数。可以通过设置可选的图形属性hjust和vjust来控制文本的横纵位置。
    geom_tile() 用来绘制色深图(image plot)或水平图(level plot)
    绘制以上几种几何图形

    df <- data.frame(
      x = c(3,1,5),
      y = c(2,4,6),
      label = c("a", "b", "c")
    )
    p <- ggplot(df, aes(x,y)) + xlab(NULL) + ylab(NULL)
    p + geom_point() + labs(title = "geom_point")  #散点图
    
    p + geom_bar(stat = "identity") + labs(title = "geom_bar(stat=\"identity\")") #直方图
    p + geom_line() + labs(title = "geom_line")  #线性图
    p + geom_area() + labs(title = "geom_area")  #面积
    p + geom_path() + labs(title = "geom_path")  #路径图
    p + geom_text(aes(label =label)) + labs(title = "geom_text")  #添加标签
    p + geom_tile() + labs(title = "geom_tile") #深色图
    p + geom_polygon() + labs(title = "geom_polygon")  #多边形
    
    bar_map
    line_map

    5. 4 展示数据分布

    改变组距宽度(binwidth)或显示精确指定切分位置(breadks)
    有多种方式可以用来进行分布的跨组比较:同时绘制多个小的直方图,facets = . ~var;使用频率多边形(frequency polygon),geom = "freqploly";或者使用条件密度图, position = "fill"

    depth_dist <- ggplot(diamonds, aes(depth)) + xlim(58,58)
    depth_dist + geom_histogram(aes(y = ..densitiy..), binwidth = 0.1) + 
      facet_grid(cut ~.)
    
    depth_dist +geom_histogram(aes(fill = cut ), binwidth = 0.1, position = "fill")
    depth_dist + geom_freqpoly(aes(y = ..dendity.., colour = cut), 
                               binwidth = 0.1)
    

    作为几何对象的直方图和频率多边形均使用stat_bin统计变换。次统计变换生成了两个输出变量count和density。变量count为默认值

    geom_boxplot = stat_boxplot +geom_boxplot #箱线图,即一个连续型变量针对一个类别变量条件所得的图形
    

    箱线图也可以对连续变量取条件,前提是数据预先经过巧妙的封箱(binning)处理

    箱线图

    library(plyr)
    qplot(cut, deoth, data = diamonds, geom = "boxplot")
    qplot(carat, depth, data = diamonds, geom = "boxplot", 
          group = round_any(carat, 0.1,floor), xlim = c(0,3))
    #图解释:对于连续型变量,必须设置group图形属性以得到多个箱线图。此处使用了group = round_any(carat, 0.1, floor)
    ####来获得针对变量carat以0,1单位为大小封箱后的箱线图
    
    boxplot

    geom_jitter = position_jitter + geom_jitter :通过在离散型分布 上添加随机噪声以避免遮盖绘制完问题,这是一种较为粗糙的方法。

    qplot(class, cty, data = mpg, geom = "jitter")
    qplot(class, drv, data = mpg, geom = "jitter")
    

    geom_density = stat_density + geom_area ##基于核平滑方法进行平滑后得到频率多边形。 仅在已知潜在的密度分布为平滑、连续且无界的时候使用这种密度图。

    qplot(depth, data = diamonds, geom = "density", xlim = c(54, 70)) #变量depth的密度图
    qplot(depth, data = diamonds, geom = "density", xlim = c(54, 70),
          fill = cut, alpha = I(0.2))  #按照变量cut的不同取值上色
    

    5.5 处理遮盖绘制问题

    散点图是研究两个连续型变量间关系的重要工具, 但是数据量很大时,这些点出现重叠问题,从而掩盖真实关系,这种为为“遮盖绘制(overplotting)”

    #下图所用数据从两个独立的正态分布中所得的2000个点,
    df <- data.frame(x = rnorm(2000), y = rnorm(2000))
    nrom <- ggplot(df, aes(x, y))
    norm + geom_point()
    norm + geom_point(shaoe = 1)
    norm + geom_point(shape = ".")
    ###使用"alpha"进行透明度的设置
    norm + geom_point(colour = "black", alpha = 1/3)
    
    ##数据离散性    设置两个连续整数间距的一半(0.5)作为打散的宽度
    td <- ggplot(diamonds, aes(table, depth)) + 
      xlim(50, 70) + ylim(50, 70)
    td + geom_point()
    td + geom_jitter()
    td +geom_jitter(width = 0.5, alpha = 1/10) ##alpha 参数调节透明度
    td + geom_jitter(position = jit)
    td + geom_jitter(position = jit, colour = "black", alpha = 1/10)  #调节透明度
    
    point_map
    jitter_map

    第五章的后半部分内容将在一节进行描述

    ggplot2: 第二章 -全网最全的教程
    ggplot2:第三章-语法突破
    ggplot2:第四章-用图层构建图像
    ggplot2:第五章-工具箱(一)

    相关文章

      网友评论

        本文标题:ggplot2:第五章-工具箱(一)

        本文链接:https://www.haomeiwen.com/subject/oovouctx.html