美文网首页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