0%

R-更改分面标签

问题描述

使用ggplot2分面绘图时,分面的标签与分面变量是一样的。但有时候用于分面的变量名不能满足我们对标签的需求,这个时候应该采取什么样的方法替换呢?

解决方法

搜索一轮后,发现可以通过facet_*()函数内的labeller参数替换分面标签,下面使用ggplot2里的示例数据ToothGrowth进行演示

1
2
3
4
5
6
7
library(ggplot2)
df <- ToothGrowth
df$dose <- as.factor(df$dose)
ggplot(df, aes(x=dose, y=len, group=dose)) +
geom_boxplot(aes(fill=dose)) +
facet_grid(~supp)

创建named vector 指定替换的label,并使用as_labeller()将它转换为一个labeller函数

1
2
3
4
5
6
7
8
#注意反引号``
sample_label <- c(
`OJ` = 'Orange Juice',
`VC` = 'Vitamin C'
)
ggplot(df, aes(x=dose, y=len, group=dose)) +
geom_boxplot(aes(fill=dose)) +
facet_grid(~supp, labeller = as_labeller(sample_label))

但这种方法的缺点在于如果分面变量很多的时候,需要一个个改会较为麻烦,暂时还没找到更加便利的方法。

Ref:
How to change facet labels?: https://stackoverflow.com/questions/3472980/how-to-change-facet-labels

https://www.datanovia.com/en/blog/how-to-change-ggplot-facet-labels/

完。