可视化学习笔记(三):ggplot2:散点图


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()函数可以修改点大小(面积)
  • 需要注意的是,含有映射shapesize时最好不要用来比较点

3、图形重叠情况

3.1设定透明度

使用alpha=#参数来设定透明度,降低图形重叠情况

3.2将数据分箱(bin),并用矩形/六边形表示

  • stat_bin2d()表示矩形分箱
  • stat_binhex()表示六边形分箱

使用以上两个函数时,需要对颜色进行调整,因此用到scale_fill_gradient()函数

scale_fill_gradient(low='', high='', breaks=, limits=)
  • lowhigh是用于指定最小和最大色阶
  • breaks是用于将填充颜色进行分割(cut)
  • limits是限定色阶的范围

3.3添加随机扰动点

当散点图中其中一个数据轴或两个数据轴都对应于离散型变量时,也会出现图形重叠的情况,因此可以给数据添加随机扰动点

geom_jitter()

4、添加回归拟合线

4.1拟合直线

使用geom_smooth()函数可以添加回归拟合直线

  • se参数控制置信区间,当se=F时,表示不绘制置信区间;默认绘制
  • level参数控制置信水平
  • linetypecoloursize三个参数用于直线进行样式调整
  • geom_smooth()函数默认使用loess方法(局部加权多项式回归)
  • 如果提前映射了colourshape参数,回归会出现分组回归的情况

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"表示添加文本注释
  • xy是用来指定注释的坐标
  • label用来添加注释内容
  • parse默认不调用数学表达式语法,当parse=T时会以数学表达式的形式表现注释

6、添加标签

  • 可以使用annotate()函数来手动添加个别点的标签
  • 如果需要自动添加标签,则使用geom_text()函数
geom_text(aes(label=), size=#, vjust=#, hjust=#)
  • 直接将变量映射到label,然后通过size来调整标签大小避免重合
  • 使用vjusthjust参数用于对标签位置进行调整;但如果需要自动做出调整,则在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)

你可能感兴趣的:(可视化学习笔记(三):ggplot2:散点图)