[29]《R数据科学》ggplot2图形标签与注释

标签

要想将探索性图形转换为解释性图形,最容易的办法就是加上一些标签。可以使用labs()函数来添加标签,以下示例为图形添加了一个标题:

ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class))+geom_smooth(se=FALSE)+labs(title = paste('Fuel efficiency generally decreases with','engine size'))
image.png

要想添加更多的文本,可以使用另外两个实用的标签

  • subtitle可以在标题下以更小的字体添加更多的附加信息。
  • caption可以在图形右下角添加文本,常用于描述数据来源:
ggplot(mpg, aes(displ, hwy)) +geom_point(aes(color = class)) +geom_smooth(se = FALSE) +labs(title = paste("Fuel efficiency generally decreases with","engine size"), subtitle = paste("Two seaters (sports cars) are an exception","because of their light weight"), caption = "Data from fueleconomy.gov")

image.png

我们还可以使用labs()函数替换坐标轴和图例中的标题

ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class))+geom_smooth(se=FALSE)+labs(x = "Engine displacement (L)", y = "Highway fuel economy (mpg)",colour = "Car type")

image.png

还可以使用数学公式代替字符串文本,用quote()代替"",再使用?plotmath命令可查看可用选项:

ggplot(df,aes(x,y))+geom_point()+labs(x=quote(sum(x[i]^2,i==1,n)),y=quote(alpha+beta+frac(delta,theta)))
image.png

注释

有时我们需要对特定的观测添加标签,此时可以使用geom_text()函数。用dplyr筛选出mpg数据集每类汽车中效率最高的型号并作注释:

library(dplyr)
data <- mpg %>% group_by(class) %>% filter(row_number(desc(hwy))==1)
ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class))+geom_text(aes(label=model),data=data)

image.png

为了解决标签之间重叠的问题,可以使用geom_label()函数,它可以为文本加上文本框,并且通过调节nudge_y参数,可以让标签位于数据点正上方:

ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class))+geom_label(aes(label=model),data=data,nudge_y = 2,alpha=0.5)
image.png

这样的效果好一些,但如果仔细查看左上角,就会发现2个标签几乎完全重叠。此时可以借助ggrepel包来调整标签的位置,避免重叠:

library(ggrepel)
ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class))+geom_point(data=data,size=3,shape=1)+geom_label_repel(aes(label=model),data=data)
image.png

有时可以直接将标签放在图形上填充不同的颜色,以代替图例:

class_avg <- mpg %>% group_by(class) %>% summarise(displ=median(displ),hwy=median(hwy))
ggplot(mpg,aes(displ,hwy,color=class))+geom_label_repel(aes(label=class),data=class_avg,size=6,label.size = 0,segment.colour = NA)+geom_point()+theme(legend.position = 'none')
image.png

你可能感兴趣的:([29]《R数据科学》ggplot2图形标签与注释)