可视化学习笔记(三):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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 文章较长,点击直达我的博客,浏览效果更好。本文内容基本是来源于STHDA,这是一份十分详细的ggplot2使...
    taoyan阅读 51,429评论 7 159
  • 1、简单折线图 折线图的x既可以对应离散性变量,也可以对应连续型变量 当x对应因子变量时,必须使用group=1映...
    100gle阅读 9,497评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,933评论 18 139
  • 1、费雪及其名著《利息理论》 美国经济学家欧文·费雪(Irving Fisher,1867—1947),在1930...
    随思录阅读 423评论 0 0
  • 杵築,一个很陌生的名字,这是一座九州大分县的小城,从别府前往这里,火车仅需20分钟,九州著名的音速“SONIC”列...
    jcmegodb阅读 1,315评论 0 2