2013-01-06 8 views
5

は、以下のようにIデータ及びプロットを持っていると仮定:ファセットラベル

mydata = data.frame(x=rnorm(4), y=runif(4), tau=c(0,0,1,1)) 
ggplot(mydata) + geom_point(aes(x=x, y=y)) + facet_wrap(~ tau) 

Iはタウと、それぞれ、「タウ= 0」と「= 1タウ」を読み取るためにファセットラベルを希望しますギリシャのシンボルとしてフォーマットされています。私はanother questionから、ラベラーlabel_parsedを使用すると文字tauを単独でフォーマットしますが、等号はものを複雑にするようです。理想的な解決策では、データを変更する必要はありません(つまり、タウを要素とし、そのレベルを指定します)。しかし、私はどんな仕事でも取ります:

答えて

8

ここでは、タウをレベルでインデックス付けします。

mydata = data.frame(x=rnorm(4), y=runif(4), tau=c(0,0,1,1)) 
ggplot(mydata) + geom_point(aes(x=x, y=y)) + 
     facet_grid(~ tau,labeller = label_bquote(tau^.(x))) 

enter image description here

編集

facet_grid(~ tau,labeller = label_bquote(tau == .(x))) 

"= 0タウ" を取得し、 "タウ= 1" にするにEDIT2第二の可変シグマ

私はこの解決策を見つけますカスタムラベラーを定義することによって、誰か(ggplot2みんな)が私にもっと簡単な解決策を与えることを願っています。

enter image description here

my.label_bquote <- function (expr1 = (tau == .(x)),expr2 = (sigma == .(x))) 
{ 
    quoted1<- substitute(expr1) 
    quoted2 <- substitute(expr2) 
    function(variable, value) { 
     value <- as.character(value) 
     if(variable == 'tau') 
     lapply(value, function(x) 
       eval(substitute(bquote(expr1, list(x = x)),list(expr1 = quoted1)))) 
     else 
     lapply(value, function(x) 
       eval(substitute(bquote(expr2, list(x = x)),list(expr2 = quoted2)))) 
    } 
} 

mydata = data.frame(x=rnorm(4), y=runif(4), tau=c(0,0,1,1),sigma=c(2,2,3,3)) 
ggplot(mydata) + geom_point(aes(x=x, y=y)) + 
    facet_grid(sigma ~ tau,labeller = my.label_bquote()) 
+0

ナイス!これは二次元にも拡張できますか?例えば。私が第2変数のシグマを持っているなら、 'facet_grid'を使って面取りしたいと思います。 – mitchus

+2

@mitchus私は2番目の変数を追加するためにmysのソリューションを更新します。 – agstudy

+0

ありがとうたくさん、素晴らしい作品! – mitchus

関連する問題