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:第五章-工具箱(一)
网友评论