如何将双重不等式放入ggplot2中的facet标签?
#Fake some data
x = seq(1,100,length.out=100)
#Relationship with beta for model y = a*x^b
alpha = 0.5
beta1 = -0.1
beta2 = 0.01
beta3 = 3
#Fitted values
y1 = alpha*x^beta1
y2 = alpha*x^beta2
y3 = alpha*x^beta3
#Create a data frame
df = data.frame(x=rep(x,3),y=c(y1,y2,y3),type=rep(c('beta < 0','0 < beta < 1','beta > 1'),each=100))
#Ggplot it up
ggplot(data=df,aes(x=x,y=y)) + geom_line() + facet_wrap(~type,labeller=label_parsed,scales='free_y')
然而,这失败了,我收到以下错误
Error in parse(text = as.character(values)) :
<text>:1:9: unexpected input
1: 0 < beta
如何解决这个问题?
答案 0 :(得分:3)
您可以使用星号在第一部分周围用双引号拆分标签,就像在this answer中一样。
有问题的标签如下:
'"0 < "*beta < 1'
为确保所有大于/小于标志的内容相同,请在制作标签时使用所有非希腊符号的引号和星号。
如果您希望按特定顺序排列结果,则可能需要订购系数type
。
df = data.frame(x=rep(x,3),y=c(y1,y2,y3),
type=rep(c('beta*" < 0"','"0 < "*beta*" < 1"','beta*" > 1"'), each=100))
df$type = factor(df$type, levels = unique(df$type))
ggplot(data = df, aes(x = x,y = y)) + geom_line() +
facet_wrap(~type, labeller = label_parsed, scales = 'free_y')