6

次のようなデータとプロットがあるとします。

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)

ファセットラベルには、ギリシャ語の記号としてフォーマットされたタウを使用して、それぞれ「tau=0」と「tau=1」を読み取ってもらいたいと思います。別の質問から、ラベラーを使用すると文字タウがそれ自体でフォーマットされることがわかりlabel_parsedますが、等号は物事を複雑にしているようです。理想的な解決策では、データを変更する必要はありません(つまり、タウを係数にしてそのレベルに名前を付ける)が、うまくいくものは何でも取ります:)

4

2 に答える 2

12

facet_gridここでは、タウをそのレベルでインデックス付けするadnを使用したソリューションです。

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

ここに画像の説明を入力してください

編集して「tau=0」と「tau=1」を取得します

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

Edit22番目の変数シグマ

カスタムラベラーを定義することで、この解決策を見つけました。誰か(ggplot2 guys)が私にもっと簡単な解決策をくれることを願っています。

ここに画像の説明を入力してください

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())
于 2013-01-06T13:01:09.247 に答える
2

これにはもっと簡単な解決策があります。シミュレートされたデータ変数名は、ラベラー引数内でどのように機能するかを明確にするために変更されました。

mydata = data.frame(x=rnorm(4), y=runif(4), tauvar=c(0,0,1,1),sigmavar=c(2,2,3,3))

ggplot(mydata) + 
   geom_point(aes(x=x, y=y)) +
   facet_grid(sigmavar ~ tauvar,labeller = label_bquote(sigma==.(sigmavar),
                                                   tau==.(tauvar)))
于 2018-06-15T02:28:20.073 に答える