r学习笔记--散点图

7 篇文章 0 订阅
7 篇文章 0 订阅

library(ggplot2)

绘制基本散点图

运行geom_point()函数,指定x,y映射变量。

library(gcookbook)
#heightweight[,c('ageYear','heightIn')]
ggplot(heightweight,aes(x=ageYear,y=heightIn))+geom_point()

设定点形、颜色属性

将分组变量映射给shape,colour属性。

library(gcookbook)
x=heightweight[,c('sex','ageYear','heightIn')]
x[0:5,]

将变量sex映射给colour或shape,分组变量一定要是分类变量,如果是数值型变量,先转化为因子型变量再作为分组变量。
默认的点形和颜色不好看,通过scale_shape_manual()函数使用其他点形,scale_colour_brewer()或者scale_colour_manual()调色板设置颜色

ggplot(heightweight,aes(x=ageYear,y=heightIn,shape=sex,colour=sex))+
  geom_point()+
  scale_shape_manual(values=c(1,2))+
  scale_colour_brewer(palette='Set1')

使用不同于默认设置的点形

对于点形,可以在geom_point(shape=,)中进行设置。
如果已将分组变量映射给shape,可以调用scale_shape_manual()函数来修改点形,scale_shape_manual(values=c(,))。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nl1H9sY2-1630743637168)(F:/RStudio\script\图片文件\spot shape.png)]

选定values的值,来选择不同的点形。

library(gcookbook)
ggplot(heightweight,aes(x=ageYear,y=heightIn,shape=sex))+
  geom_point(size=3)+
  scale_shape_manual(values=c(1,10))

添加回归模型拟合线

使用stat_smooth()函数并设定method=lm即可添加线性回归拟合线

library(gcookbook)

#基本绘图对象
sp <- ggplot(heightweight,aes(x=ageYear,y=heightIn))

sp + geom_point() + stat_smooth(method=lm)

默认会添加95%的置信域,可以通过设置level参数来设置置信水平,设定se=FALSE时,取消置信域。

sp + geom_point()+stat_smooth(method=lm,level=0.99)
sp + geom_point()+stat_smooth(method=lm,se=FALSE)

默认的stat_smooth()方法是loess曲线(局部加权多项式)

sp+geom_point()+stat_smooth()

添加模型系数

使用annotate函数可以手动添加文本,设置参数parse=TRUE调用R的数学表达式语法来输入公式。
数学表达式语法:

expression(r^2==0.42)
#合法公式

expression(r2=0.42)
#非法公式
#报错信息:Error: unexpected ‘=’ in "expression(r
2="

以下是annotate函数的正确使用示例

#predictvals函数根据模型和数据生成预测值
source('predictvals.R')
model <- lm(heightIn~ageYear,heightweight)
pred <- predictvals(model,'ageYear','heightIn')
sp <- ggplot(heightweight,aes(x=ageYear,y=heightIn))+
  geom_point()+geom_line(data=pred)
sp + annotate("text",label='r^2==0.42',parse=TRUE,x=16.5,y=52)

首先,lm函数会建立线性模型,里面有所需的数据,根据数据提取文本。

library(gcookbook)
model<-lm(heightIn~ageYear,heightweight)
summary(model)

其中Estimate列含有公式y=a+b*x的a和b,p值和r^2值也有。
通过提取信息和拼接,可以实现添加线性回归公式

source('formula.R')
eqn <- formula(model)
sp + annotate('text',label=eqn,parse=TRUE,x=Inf,y=-Inf,hjust=1.1,vjust=-.5)

添加标签

使用geom_text()函数可以指定label来添加数据标签。

library(gcookbook)
subset(countries,Year==2009 & healthexp>2000)

首先绘制基本散点图,将对象储存在SP中

sp <- ggplot(subset(countries,Year==2009 & healthexp >2000),aes(x=healthexp,y=infmortality))+geom_point()
sp

然后指定label的数据分组和字体大小

sp + geom_text(aes(label=Name),size=4)

可以看到标签和点重叠在一起,可以通过调节垂直位置来解决。
默认的的点位于标签中心,调节vjust控制垂直,hjust控制水平。
由于hjust的调节机制存在问题,所以hjust一般设置成0或者1。
vjust设置等于1时,标签顶部与点对齐

sp+ geom_text(aes(label=Name),size=3,vjust=1,hjust=0)

如果只是一部分点需要标签,可以创建一个只包含要使用标签的新列。

#首先复制标签列
cdat <- subset(countries,Year==2009 & healthexp>2000)
cdat$Name1 <- cdat$Name
#然后利用%in%将需要的标签位置设置成TRUE
idx <- cdat$Name1 %in% c('Canada','Greece')
idx
#根据上面的逻辑变量,FALSE转化成NA
cdat$Name1[!idx] <- NA
cdat

利用新列来创建标签

sp + geom_text(aes(label=cdat$Name1),size=4,vjust=1)

绘制气泡图

对于x轴变量和y轴变量都是分类变量的时候,气泡图可以用来显示网格点上的变量值。
首先创建数据

hec <- HairEyeColor[,,'Male']+HairEyeColor[,,'Female']
#转化为长格式
library(reshape2)
hec<-melt(hec,value.name = 'count')
hec

然后通过geom_point绘制点形为圆圈的点,scale_size_area指定气泡大小,geom_text添加标签,使得标签位于气泡下方

ggplot(hec,aes(x=Eye,y=Hair))+
geom_point(aes(size=count),shape=21,colour='black',fill='cornsilk')+
scale_size_area(max_size = 20)+
geom_text(aes(y=as.numeric(Hair)-sqrt(count)/22,label=count),vjust=1,colour='grey60',size=4)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值