1、简单散点图
使用geom_point()
函数即可绘制,并且在映射中可以使用以下映射参数:
-
shape
:指定形状 -
colour
:填充(需要注意的是,fill对point可能不起作用) -
size
:修改大小
2、样式修改
2.1 颜色修改
颜色的手动修改使用以下函数:
scale_colour_manual()
scale_colour_brewer()
2.2 形状修改
- 使用
scale_shape_manual()
函数可以对形状进行重新修改 - 使用
scale_size_area()
函数可以修改点大小(面积) - 需要注意的是,含有映射
shape
和size
时最好不要用来比较点
3、图形重叠情况
3.1设定透明度
使用alpha=#
参数来设定透明度,降低图形重叠情况
3.2将数据分箱(bin),并用矩形/六边形表示
-
stat_bin2d()
表示矩形分箱 -
stat_binhex()
表示六边形分箱
使用以上两个函数时,需要对颜色进行调整,因此用到scale_fill_gradient()
函数
scale_fill_gradient(low='', high='', breaks=, limits=)
-
low
和high
是用于指定最小和最大色阶 -
breaks
是用于将填充颜色进行分割(cut) -
limits
是限定色阶的范围
3.3添加随机扰动点
当散点图中其中一个数据轴或两个数据轴都对应于离散型变量时,也会出现图形重叠的情况,因此可以给数据添加随机扰动点
geom_jitter()
4、添加回归拟合线
4.1拟合直线
使用geom_smooth()
函数可以添加回归拟合直线
-
se
参数控制置信区间,当se=F
时,表示不绘制置信区间;默认绘制 -
level
参数控制置信水平 -
linetype
、colour
、size
三个参数用于直线进行样式调整 geom_smooth()
函数默认使用loess方法(局部加权多项式回归)- 如果提前映射了
colour
和shape
参数,回归会出现分组回归的情况
4.2logit回归曲线
使用stat_smooth()
可以设定回归参数
-
method
用于指定回归方法 -
method.args=list()
用于传递回归方法的其他参数给stat_smooth()
- 如果想基于数据进行拟合外推,需要添加
fullrang=T
参数
4.3对模型添加拟合直线
可以在建立模型后使用predict()
函数预测,然后通过geom_line函数来添加模型的拟合线:
#建立模型
model <- lm(heightIn~ ageYear + I(ageYear^2), data=heightweight)
model
summary(model)
#设定预测数据
xmin <- min(heightweight$ageYear)
xmax <- max(heightweight$ageYear)
predicted <- data.frame(ageYear=seq(xmin, xmax, length.out = 100))
predicted$heightIn <- predict(model, predicted);predicted
#绘图
sp <- ggplot(heightweight, aes(x=ageYear, y=heightIn)) +
geom_point(colour="grey40")
sp + geom_line(data=predicted, size=1)
5、添加文本注释
使用annotate()
函数来对图形进行注释添加
annotate(geom, x=, y=, label="", parse=F)
-
geom
是指定添加注释类型,如geom="text"
表示添加文本注释 -
x
和y
是用来指定注释的坐标 -
label
用来添加注释内容 -
parse
默认不调用数学表达式语法,当parse=T
时会以数学表达式的形式表现注释
6、添加标签
- 可以使用
annotate()
函数来手动添加个别点的标签 - 如果需要自动添加标签,则使用
geom_text()
函数
geom_text(aes(label=), size=#, vjust=#, hjust=#)
- 直接将变量映射到
label
,然后通过size
来调整标签大小避免重合 - 使用
vjust
和hjust
参数用于对标签位置进行调整;但如果需要自动做出调整,则在aes
映射中对y-axis或x-axis加减一个单位
7、绘制气泡图
使用geom_point()
函数和scale_size_area()
函数组合即可绘制出气泡图;但实际上气泡图还是散点图
library(gcookbook) #加载数据
cdat <- subset(countries, Year==2009 &
Name %in% c("Canada", "Ireland", "United Kingdom", "United States", "New Zealand", "Iceland", "Japan", "Luxembourg", "Netherlands", "Switzerland"))
p <- ggplot(cdat, aes(x=healthexp, y=infmortality, size=GDP)) +
geom_point(shape=21, colour="black", fill="cornsilk")
# 将GDP映射给半径(scale_size_continuous的默认值)
p
# 将GDP映射给面积,得到略大的圆圈
p + scale_size_area(max_size=15)
网友评论