[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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容