multi_line 不适用于 label_parsed?

multi_line does not work with label_parsed?

我正在尝试使用包含表达式和常规值的分面标签制作图表。但是我无法让 label_parsed 与 'multi_line = FALSE' 一起工作。还有另一种方法可以让它成为一条线吗? (我的意思是除了将两个因素结合在 1 中)

示例:

df<-data.frame(x=1:3,y=1:3,f1=rep("TCRb",3),f2=1:3)
#make label to be parsed
df$f1.<-df$f1
levels(df$f1.)<-"paste('TCR',beta)^'-/-'"
#plot with two factor labels in 1 line
ggplot(df,aes(x,y))+geom_point()+
  facet_wrap(~f1+f2,labeller=labeller(.multi_line=F))

#now with two lines and the parsed label
ggplot(df,aes(x,y))+geom_point()+
  facet_wrap(~f1.+f2,labeller=labeller(f1.=label_parsed,.multi_line=T))

#it doesn't work with 1 line
ggplot(df,aes(x,y))+geom_point()+
  facet_wrap(~f1.+f2,labeller=labeller(f1.=label_parsed,.multi_line=F))

如果您使用 label_parsed 作为整个边距的标签(在您的示例中为 .cols),您可以同时解析并将所有内容保持在同一行上。

ggplot(df, aes(x, y)) + 
    geom_point() +
    facet_wrap(~f1. + f2, labeller = labeller(.cols = label_parsed, .multi_line = FALSE))

我不知道如何将参数直接传递给标签函数,如 label_parsed,但另一种选择是创建一个新的解析函数,将 multi_line 设置为 FALSE .

label_parsed2 = function(labels) {
    label_parsed(labels = labels, multi_line = FALSE)
}

ggplot(df, aes(x, y)) + 
    geom_point() +
    facet_wrap(~f1. + f2, labeller = label_parsed2)