jeck猫
下面是没有文本注释的情节:library(ggplot2)p <- ggplot(mtcars, aes(mpg, wt)) +
geom_point() +
facet_grid(. ~ cyl) +
theme(panel.spacing = unit(1, "lines"))p让我们创建一个额外的数据框架来保存文本注释:dat_text <- data.frame(
label = c("4 cylinders", "6 cylinders", "8 cylinders"),
cyl = c(4, 6, 8))p + geom_text(
data = dat_text,
mapping = aes(x = -Inf, y = -Inf, label = label),
hjust = -0.1,
vjust = -1)或者,我们可以手动指定每个标签的位置:dat_text <- data.frame(
label = c("4 cylinders", "6 cylinders", "8 cylinders"),
cyl = c(4, 6, 8),
x = c(20, 27.5, 25),
y = c(4, 4, 4.5))p + geom_text(
data = dat_text,
mapping = aes(x = x, y = y, label = label))我们还可以将情节分为两个方面:dat_text <- data.frame(
cyl = c(4, 6, 8, 4, 6, 8),
am = c(0, 0, 0, 1, 1, 1))dat_text$label <- sprintf(
"%s, %s cylinders",
ifelse(dat_text$am == 0, "automatic", "manual"),
dat_text$cyl)p +
facet_grid(am ~ cyl) +
geom_text(
size = 5,
data = dat_text,
mapping = aes(x = Inf, y = Inf, label = label),
hjust = 1.05,
vjust = 1.5
)注:你可以用-Inf和Inf若要将文本定位到面板的边缘,请执行以下操作。你可以用hjust和vjust若要调整文本的合理性,请执行以下操作。文本标签数据框架dat_text应该有一个与您的facet_grid()或facet_wrap().
烙印99
我认为上面的答案=“文本”是无用的,下面的代码也没问题。ann_text <- data.frame(mpg = 15,wt = 5,
cyl = factor(8,levels = c("4","6","8")))p + geom_text(data = ann_text,label = "Text" )但是,如果您想在不同的子图中进行不同的标记,可以这样做:ann_text <- data.frame(mpg = c(14,15),wt = c(4,5),lab=c("text1","text2"),
cyl = factor(c(6,8),levels = c("4","6","8")))p + geom_text(data = ann_text,aes(label =lab) )