2016-08-24 4 views
1

Wie fügt man eine doppelte Ungleichung in ein Facettenlabel in ggplot2 ein?Doppelte Ungleichheit in ggplot2 facet label

#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') 

Dies ist jedoch nicht und ich erhalte die folgenden Fehler

Error in parse(text = as.character(values)) : 
    <text>:1:9: unexpected input 
1: 0 < beta 

Wie dies zu umgehen?

+1

Sie können mit '' 'Etikettierer = label_value''' –

Antwort

3

Sie können die Beschriftung in doppelte Anführungszeichen um den ersten Teil mit einem Stern ähnlich wie in this answer teilen.

Das Label in Frage sieht dann aus wie:

'"0 < "*beta < 1' 

sicher, dass alle größer zu machen, als/weniger als Zeichen gleich aussehen, die Zitate und Sternchen für alle nicht-griechische Symbole verwenden, wenn die Etiketten zu machen. Wenn Sie das Ergebnis in einer bestimmten Reihenfolge haben möchten, müssen Sie wahrscheinlich den Faktor type bestellen.

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') 

enter image description here