3.1 绘制基本散点图
library(gcookbook) library(ggplot2) # 列出我们用到的列 head(heightweight[, c("ageYear", "heightIn")])
> head(heightweight[, c("ageYear", "heightIn")]) ageYear heightIn 1 11.92 56.3 2 12.92 62.3 3 12.75 63.3 4 13.42 59.0 5 15.92 62.5 6 14.25 62.5
ggplot(heightweight, aes(x=ageYear, y=heightIn)) + geom_point()
unnamed-chunk-11
# shape参数设置点型 size设置点的大小 ggplot(heightweight, aes(x=ageYear, y=heightIn)) + geom_point(shape=21) ggplot(heightweight, aes(x=ageYear, y=heightIn)) + geom_point(size=1.5)
image-20210816225649979
3.2 使用点形和颜色属性进行分组
head(heightweight[, c("sex", "ageYear", "heightIn")]) > head(heightweight[, c("sex", "ageYear", "heightIn")]) sex ageYear heightIn 1 f 11.92 56.3 2 f 12.92 62.3 3 f 12.75 63.3 4 f 13.42 59.0 5 f 15.92 62.5 6 f 14.25 62.5
ggplot(heightweight, aes(x=ageYear, y=heightIn, colour=sex)) + geom_point() ggplot(heightweight, aes(x=ageYear, y=heightIn, shape=sex)) + geom_point()
unnamed-chunk-14
unnamed-chunk-15
# scale_shape_manual()使用其它点形状 #scale_colour_brewer()使用其它颜色 ggplot(heightweight, aes(x=ageYear, y=heightIn, shape=sex, colour=sex)) + geom_point() + scale_shape_manual(values=c(1,2)) + scale_colour_brewer(palette="Set1")
unnamed-chunk-17
3.3 使用不同于默认设置的点形
# 使用点形和填充色属性分别表示不同变量 hw <- heightweight # 分组 Categorize into <100 and >=100 groups hw$weightGroup <- cut(hw$weightLb, breaks=c(-Inf, 100, Inf), labels=c("< 100", ">= 100")) # 使用具有颜色和填充色的点形及对应于空值(NA)和填充色的颜色 ggplot(hw, aes(x=ageYear, y=heightIn, shape=sex, fill=weightGroup)) + geom_point(size=2.5) + scale_shape_manual(values=c(21, 24)) + scale_fill_manual(values=c(NA, "black"), guide=guide_legend(override.aes=list(shape=21)))
unnamed-chunk-33
3.4 将连续型变量映射到点的颜色或大小属性上
ggplot(heightweight, aes(x=ageYear, y=heightIn, colour=weightLb)) + geom_point() ggplot(heightweight, aes(x=ageYear, y=heightIn, size=weightLb)) + geom_point()
image-20210817114855294
# 默认点的大小范围为1-6mm # scale_size_continuous(range=c(2, 5))修改点的大小范围
# 将色阶设定为由黑至白 ggplot(heightweight, aes(x=weightLb, y=heightIn, fill=ageYear)) + geom_point(shape=21, size=2.5) + scale_fill_gradient(low="black", high="white") # 使用 guide_legend() 函数以离散的图例代替色阶 ggplot(heightweight, aes(x=weightLb, y=heightIn, fill=ageYear)) + geom_point(shape=21, size=2.5) + scale_fill_gradient(low="black", high="white", breaks=12:17, guide=guide_legend())
image-20210817165620820
# 调用scale_size_area()函数使数据点的面积正比于变量值。 ggplot(heightweight, aes(x=ageYear, y=heightIn, size=weightLb, colour=sex)) + geom_point(alpha=.5) + scale_size_area() + scale_colour_brewer(palette="Set1")
unnamed-chunk-45
3.5 处理图形重叠
方法:
使用半透明的点
将数据分箱(bin),并用矩形表示
将数据分箱(bin),并用六边形表示
使用箱线图
sp <- ggplot(diamonds, aes(x=carat, y=price)) sp + geom_point() # 透明度 sp + geom_point(alpha=.1) sp + geom_point(alpha=.01) # stat_bin2d()函数默认分别在x轴和y轴方向上将数据分割为30各组 sp + stat_bin2d() # bin=50设置箱数,limits参数设定图例范围 sp + stat_bin2d(bins=50) + scale_fill_gradient(low="lightblue", high="red", limits=c(0, 6000))
image-20210817173245460
# stat_binhex()函数使用六边形分箱 library(hexbin) sp + stat_binhex() + scale_fill_gradient(low="lightblue", high="red", limits=c(0, 8000)) sp + stat_binhex() + scale_fill_gradient(low="lightblue", high="red", breaks=c(0, 250, 500, 1000, 2000, 4000, 6000), limits=c(0, 6000))
image-20210817174431437
sp1 <- ggplot(ChickWeight, aes(x=Time, y=weight)) sp1 + geom_point() # 调用position_jitter()函数给数据点增加随机扰动,通过width,height参数调节 sp1 + geom_point(position="jitter") # 也可以调用 geom_jitter() sp1 + geom_point(position=position_jitter(width=.5, height=0))
image-20210817175225507
# 箱线图 sp1 + geom_boxplot(aes(group=Time))
unnamed-chunk-511