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)

R语言ggplot2包之画散点图_第1张图片

分组散点图

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

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

R语言ggplot2包之画散点图_第2张图片
R语言ggplot2包之画散点图_第3张图片

解决点覆盖问题

当点的密度大时,我们可以改变点的透明度来区分各个点。当然我们可以使用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()

R语言ggplot2包之画散点图_第4张图片
R语言ggplot2包之画散点图_第5张图片
R语言ggplot2包之画散点图_第6张图片

当其中的一个或者两个变量为离散型数据时,也会导致覆盖的问题。我们可以使用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))

R语言ggplot2包之画散点图_第7张图片
R语言ggplot2包之画散点图_第8张图片
R语言ggplot2包之画散点图_第9张图片

增加拟合的回归线

为了更好的看出两个变量之间的关系,我们还可以拟合回归线,用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)

R语言ggplot2包之画散点图_第10张图片
R语言ggplot2包之画散点图_第11张图片
R语言ggplot2包之画散点图_第12张图片
还有很多关于增回归线的技术,这里暂时不涉及,这本身还需要相关的计量知识来支撑的,需要了解的大家再查看书籍对应部分即可。

给点增加标签

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

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

R语言ggplot2包之画散点图_第13张图片

气泡图

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

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")

R语言ggplot2包之画散点图_第14张图片

创建散点矩阵图

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

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

R语言ggplot2包之画散点图_第15张图片
这里我们不用ggplot2包进行,这是因为该包不太适合对这类图形进行展示。

你可能感兴趣的:(R语言学习与应用,可视化,R语言,ggplot2,散点图)