前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言可视化及作图7--ggplot2之标签、图例和标题绘制

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

作者头像
前端小tips
发布2021-12-08 17:09:18
5.5K0
发布2021-12-08 17:09:18
举报
文章被收录于专栏:前端文章小tips


R语言绘图系列:

1. 标签绘制

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

使用geom_label绘制标签散点图

代码语言:javascript
复制
p+geom_label() 

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

代码语言:javascript
复制
p+geom_point(color='dodgerblue')+geom_text(nudge_x = 0.15,nudge_y = -1)
#所有标签整体向右平移0.15,向下平移1

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

代码语言:javascript
复制
p+geom_point(color='dodgerblue')+geom_text(nudge_x = 0.1,angle=45)

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

代码语言:javascript
复制
p+geom_label(aes(fill=factor(cyl)),color='white',fontface='bold',family='Times New Roman')

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

代码语言:javascript
复制
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,而不是图上的公式。

画一个散点图

代码语言:javascript
复制
p <- ggplot(mtcars,aes(x=wt,y=mpg))+geom_point()
p

annotate函数传入标签

代码语言:javascript
复制
p+annotate('text',x=4,y=25,label='I love R', size=5,color='forest green',family='Times New Roman')

添加矩形

代码语言:javascript
复制
a= p+annotate('rect',xmin=3,xmax=4.2,ymin=12,ymax=21,alpha=.2,fill='forest green')
a

添加短线段

代码语言:javascript
复制
b=p+annotate('segment',x=2.5,xend=4,y=15,yend=25,color='blue')
b
代码语言:javascript
复制
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) 图例调整函数也属于标度函数的一类,但不可以直接使用加号来连接,必须放在函数中,作为一个参数。

代码语言:javascript
复制
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'))
代码语言:javascript
复制
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')
代码语言:javascript
复制
pp+guides(color=guide_colorbar('color'),shape=guide_legend('shape',ncol=5))

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

代码语言:javascript
复制
pp+guides(color=guide_legend('title'),size=guide_legend('title'),shape=guide_legend('title'))
#三个分类变量都是一个图例,包含了颜色图形和大小
代码语言:javascript
复制
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()。

代码语言:javascript
复制
pp+scale_color_continuous(guide='colorbar')+
  scale_size_discrete(guide='legend')+
  scale_shape(guide='legend')
代码语言:javascript
复制
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函数

代码语言:javascript
复制
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))
代码语言:javascript
复制
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轴标签

代码语言:javascript
复制
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()只能定义标题和副标题,默认的位置在左上角。

代码语言:javascript
复制
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'))

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 标签绘制
  • 2. 图例绘制
  • 3. 标题绘制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档