美文网首页生信绘图
R语言可视化及作图7--ggplot2之标签、图例和标题绘制

R语言可视化及作图7--ggplot2之标签、图例和标题绘制

作者: Hayley笔记 | 来源:发表于2021-04-26 16:38 被阅读0次

R语言绘图系列:


1. 标签绘制

library(ggplot2)
head(mtcars)
p <- ggplot(mtcars,aes(wt,mpg,label=rownames(mtcars)))
p+geom_text() #使用geom_text绘制标签散点图

使用geom_label绘制标签散点图

p+geom_label() 

绘制点,并通过nudge参数对标签进行x轴和y轴上的平移

p+geom_point(color='dodgerblue')+geom_text(nudge_x = 0.15,nudge_y = -1)
#所有标签整体向右平移0.15,向下平移1

使用angle参数对标签角度进行设置

p+geom_point(color='dodgerblue')+geom_text(nudge_x = 0.1,angle=45)

geom_label可以使用fill对颜色进行填充,fontface设置字体,geom_text不能填充颜色

p+geom_label(aes(fill=factor(cyl)),color='white',fontface='bold',family='Times New Roman')

parse参数意思是前面传入的是一个数学表达式,size定义标签相对大小。

x <- 1:8
df <- data.frame(x=1:8,y=1.2+x^2)
ggplot(df,aes(x,y))+geom_point()+geom_smooth()+geom_text(aes(x=4,y=40),label='y==1.2+x^2',parse = TRUE,size=7)
#如果parse=FAKSE,图形上显示的就直接是y == 1.2 + x^2,而不是图上的公式。

画一个散点图

p <- ggplot(mtcars,aes(x=wt,y=mpg))+geom_point()
p

annotate函数传入标签

p+annotate('text',x=4,y=25,label='I love R', size=5,color='forest green',family='Times New Roman')

添加矩形

a= p+annotate('rect',xmin=3,xmax=4.2,ymin=12,ymax=21,alpha=.2,fill='forest green')
a

添加短线段

b=p+annotate('segment',x=2.5,xend=4,y=15,yend=25,color='blue')
b
c=p+annotate('pointrange',x=3.5,y=20,ymin=12,ymax=28,color='red',size=1.5)
c

2. 图例绘制

2.1 guide_legend函数(主要参数:color, shape, size)
图例调整函数也属于标度函数的一类,但不可以直接使用加号来连接,必须放在函数中,作为一个参数。

df <- data.frame(x=1:20,y=1:20,color=letters[1:20])
p <- ggplot(df,aes(x,y))+geom_point(aes(color=color))
p+guide_legend(title = 'legend',nrow=4,ncol=5)
#Error: Can't add `guide_legend(title = "legend", nrow = 4, ncol = 5)` to a ggplot object.
#正确方法:
p+guides(color=guide_legend('my legend',ncol=5,nrow=4,label.position = 'left'))
dat <- data.frame(x=1:5,y=1:5,p=1:5,q=factor(1:5),r=factor(1:5))
pp <- ggplot(dat,aes(x,y,color=p,size=q,shape=r))+geom_point()
#画出散点图,在不对图例进行任何调整的情况下,图形有测也会出现三个图例,分别是color,size,shape
pp+guides(color='colorbar',size='none',shape='legend')
pp+guides(color=guide_colorbar('color'),shape=guide_legend('shape',ncol=5))

guide_colorbar和guide_legend设置的是不同的图例,guide_colorbar定义色条图例,guide_legend定义普通图例。

pp+guides(color=guide_legend('title'),size=guide_legend('title'),shape=guide_legend('title'))
#三个分类变量都是一个图例,包含了颜色图形和大小
ggplot(mpg,aes(displ,cty))+geom_point(aes(size=hwy,color=cyl,shape=drv))+guides(color=guide_colorbar(order = 2),shape=guide_legend(order = 3),size=guide_legend(order=1))
#order参数接受一个小于等于99的值

2.2 标度函数scale
对于连续型变量,使用的参数是scale_xxx_continous(),对于分类型变量,使用的是scale_xxx_discrete()。

pp+scale_color_continuous(guide='colorbar')+
  scale_size_discrete(guide='legend')+
  scale_shape(guide='legend')
pp+scale_color_continuous(guide=guide_colorbar('color'))+
  scale_shape(guide=guide_legend('shape',ncol = 5))+
  scale_size_discrete(guide=guide_legend('size',ncol=5))

2.3:theme函数

pt <- ggplot(mtcars,aes(mpg,wt,color=factor(cyl)))+geom_point()
pt+scale_color_discrete(name='cyl')+
  #由于theme()函数无法定义图例的标题,因此事先用scale函数定义
  theme(legend.title = element_text(color = 'blue',family = 'Times New Roman'),
        legend.background = element_rect(color='red',linetype = 2))
pt+scale_color_discrete(name='cyl')+
  theme(legend.position = 'bottom', #将图例放置在图片底部
        legend.text=element_text(color = 'red',size=13,angle=45),
        #设置图例中图标的标签,颜色为红色,字号为13,并呈45度角放置。
        legend.key = element_rect(color='black',fill = 'orange'), 
        #设置每一个图标的背景,此处边框色设置为黑色,背景填充色为橘黄色。legend.key就是图标
        legend.key.height = unit(1,'cm'),
        legend.key.width = unit(1,'cm'))
#设置图标的大小,注意此处传入的是unit()。unit()用于设置传入的参数的单位。

在theme函数中,与图例有关的主要参数有:

参数 用法 功能
legend.background 接受函数element_rect() 定义图例背景
legend.margin 接受数值 定义图例的边缘范围
legend.key 接受函数element_rect() 定义图例中每一个小图标的背景
legend.key.size 接受unit() 定义图例中每一个小图标的大小
legend.key.height/width 接受unit() 定义图例中每一个小图标的背景大小
legend.text 接受函数element_text() 定义图例中每一个图标的标签
legend.text.align 取值0-1,0表示左边,1表示右边 定义图例标签对齐方式
legend.title 接受函数element_text() 定义图例标题样式,但是无法定义标题是什么
legend.position 接受字符串:“none”, “left”, “right”, “bottom”, “top”;或者接受一个表示坐标的数值向量 定义图例出现的位置
legend.direction 接受字符串 定义图例中图标的排列方式
legend.box 接受字符串: “horizontal”或“vertical” 定义多个图例的排列方式

3. 标题绘制

标题主要有五种:主标题,副标题,角注,x轴标签和y轴标签

p <- ggplot(mtcars,aes(mpg,wt,color=factor(cyl)))+geom_point()
p+ggtitle(label = 'New plot title',subtitle = 'subtitle')+
  labs(color='legend')+
  xlab('new x label')+
  ylab('new y label')+
  labs(caption = '(based on mtcars data)')

ggtitle()只能定义标题和副标题,默认的位置在左上角。

p+labs(title = 'New plot title')+
  labs(caption = '(based on mtcars data)')+
  theme(plot.title = element_text(color = 'red',size = 9,hjust = 0.5),
        #默认的标题位置出现在左上方,通过hjust参数进行调整,该参数接受一个0-1之间的数值,0表示最左侧,1表示最右侧。
        plot.caption = element_text(color = 'blue'))

相关文章

网友评论

    本文标题:R语言可视化及作图7--ggplot2之标签、图例和标题绘制

    本文链接:https://www.haomeiwen.com/subject/rlntrltx.html