R语言ggplot2包之画散点图

引言

散点图是描绘两个连续型变量之间关系的图形,特别是在观察两个变量之间的相关关系时特别好使。

散点图基本操作

aes中的x,y值分别表示在x,y轴的变量;geom_point表示增加三点图图层,其中的size控制点的大小,shape控制形状,一共25个,为0-25。

library(gcookbook)
library(ggplot2)
head(heightweight)
#  sex ageYear ageMonth heightIn weightLb
#1   f   11.92      143     56.3     85.0
#2   f   12.92      155     62.3    105.0
#3   f   12.75      153     63.3    108.0
#4   f   13.42      161     59.0     92.0
#5   f   15.92      191     62.5    112.5
#6   f   14.25      171     62.5    112.0
ggplot(heightweight, aes(x=ageYear, y=heightIn)) + geom_point(size=3,shape=21)

这里写图片描述

分组散点图

散点图分组有两种方式,一种利用shape,以点的形状来区分各种;一种用color,以点的颜色来区分.但是得记住,分组的变量必须为因子变量或者字符串。

ggplot(heightweight, aes(x=ageYear, y=heightIn, colour=sex)) + geom_point()#以颜色区分
ggplot(heightweight, aes(x=ageYear, y=heightIn, shape=sex)) + geom_point()#以形状区分

这里写图片描述
这里写图片描述

解决点覆盖问题

当点的密度大时,我们可以改变点的透明度来区分各个点。当然我们可以使用bin的方法来区分,这种方法是把点的形状设定为长方形,密度越大的长方形区域越透明。

ggplot(diamonds, aes(x=carat, y=price))+ geom_point(alpha=.1)
ggplot(diamonds, aes(x=carat, y=price))+ geom_point(alpha=.01)
ggplot(diamonds, aes(x=carat, y=price))+ stat_bin2d()

这里写图片描述
这里写图片描述
这里写图片描述

当其中的一个或者两个变量为离散型数据时,也会导致覆盖的问题。我们可以使用jitter方法和box的方法。

ggplot(ChickWeight, aes(x=Time, y=weight))+geom_point()
ggplot(ChickWeight, aes(x=Time, y=weight))+geom_point(position="jitter")
#position="jitter"等价于geom_jitter,即下面的方法
ggplot(ChickWeight, aes(x=Time, y=weight))+geom_point(position=position_jitter(width=.5, height=0))
ggplot(ChickWeight, aes(x=Time, y=weight))+ geom_boxplot(aes(group=Time))

这里写图片描述
这里写图片描述
这里写图片描述

增加拟合的回归线

为了更好的看出两个变量之间的关系,我们还可以拟合回归线,用stat_smooth(method=lm)函数即可。

ggplot(heightweight, aes(x=ageYear, y=heightIn))+geom_point() + stat_smooth(method=lm)
#该回归直线的置信区间默认的置信度是95%,我们也可以对其进行修改。
ggplot(heightweight, aes(x=ageYear, y=heightIn))+ geom_point() + stat_smooth(method=lm, level=0.99)#99%的置信度
#也可以不显示置信区间
ggplot(heightweight, aes(x=ageYear, y=heightIn))+ geom_point(colour="grey60") + stat_smooth(method=lm, se=FALSE)

这里写图片描述
这里写图片描述
这里写图片描述
还有很多关于增回归线的技术,这里暂时不涉及,这本身还需要相关的计量知识来支撑的,需要了解的大家再查看书籍对应部分即可。

给点增加标签

有时候,当点数量不多时,我们想让点显示名称来进行区分,用geom_text就能做到,只要给参数label赋予对应的名字即可。

ggplot(subset(countries, Year==2009 & healthexp>2000),
aes(x=healthexp, y=infmortality)) +geom_text(aes(label=Name), size=4)

这里写图片描述

气泡图

有时候我们想展示三个变量之间的关系,这时气泡图是一个很好的工具。

cdat <- subset(countries, Year==2009 &
Name %in% c("Canada", "Ireland", "United Kingdom", "United States",
"New Zealand", "Iceland", "Japan", "Luxembourg",
"Netherlands", "Switzerland"))
#气泡大小用size参数进行控制,把第三个变量赋值给该参数就行。
ggplot(cdat, aes(x=healthexp, y=infmortality, size=GDP)) +
geom_point(shape=21, colour="black", fill="cornsilk")

这里写图片描述

创建散点矩阵图

散点矩阵图是展示多个变量相互之间的一个极好展示。

c2009 <- subset(countries, Year==2009,
select=c(Name, GDP, laborrate, healthexp, infmortality))
pairs(c2009[,2:5])

这里写图片描述
这里我们不用ggplot2包进行,这是因为该包不太适合对这类图形进行展示。

  • 19
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值