2013-06-27 25 views
40

別のグラフが公開され、別の日にggplot2のものが調整されました...私は泣いていますか?私は確信していません...ggplotの軸ラベルの添え字

dat <- data.frame(x = rnorm(100), y = rnorm(100)) 
ggplot(dat, aes(x=x,y=y)) + 
    geom_point() + 
    labs(y=expression(Blah[1])) 

dat <- data.frame(x = rnorm(100), y = rnorm(100)) 
ggplot(dat, aes(x=x,y=y)) + 
    geom_point() + 
    labs(y=expression(Blah[1d])) 

私は軸ラベルに下付き文字を持つ方法を考えています。最初の例は数字のように動作します。大括弧で囲まれた文字が失敗するとすぐに機能します。 Blah [subscript(1d)]は本質的に私の必要なものですが、下付き文字で手紙を手に入れる方法はありません。 ...欲求不満に追加し、もちろん

labs(y=expression(Blah[12]))をペーストなどのバリエーション()などを試してみました - これは

labs(y=expression(Blah[d1]))に動作します - - これは

の作品これは

labs(y=expression(Blah[d]))の作品

labs(y=expression(Blah[1d])) - これは失敗します。

思考?

答えて

41

私は考えることができます使用するよりも2つ良い方法paste:Rで

ggplot(dat, aes(x=x,y=y)) + 
    geom_point() + 
    labs(y=expression(Blah[1*d])) 
ggplot(dat, aes(x=x,y=y)) + 
    geom_point() + 
    labs(y=expression(Blah["1d"])) 

トークン(または「名前」や「記号」)は数字で始めることになっていません。したがって、引用符で囲むか、1dを空白区切り記号の*演算子で区切って、その制限を回避します。これは、純粋な数値リテラルを合法的なRシンボルまたはトークンと "結合"または "結び付け"ます。

だけ添字パーセント記号を取得するには:それは始まりを意味するので%文字は、Rの解析に特別な意味を持っている

expression(Blah[1*d]*"(%)") 

ggplot(dat, aes(x=x,y=y)) + 
    geom_point() + 
    labs(y=expression(Blah[1*d]*"%")) 

PCT-記号の周りに括弧を置くことをユーザ定義の中置演算子の使用。したがって、リテラルとして使用するには、引用符で囲む必要があります。

+0

ありがとうございましたDWinはトークンと呼ばれていました。それは問題ではありませんでしたが(私の答えにあった)、ペーストなしの下付き文字の後に(%)を得ることができますか? – nzcoops

+1

もちろんできます。サブスクリプトかどうか? –

+0

下付き文字ではありません。 – nzcoops

2

大丈夫です。 !私はあなたが質問を常に道(私はそれを得たどのように迅速にもかかわらず、それを自分自身に答えるために、私はこれを投稿しませんでした汗ここでは、次のとおりです。

ggplot(dat, aes(x=x,y=y)) + 
    geom_point() + 
    labs(y=expression(Blah[1][d])) 

は答えを投稿することに最高と思ったのではなくそれは他の誰か1日助けるかもしれないとして確保

。「Blahs」の質問を削除し、私が実際に paste0()はここで働いていないのはなぜ expression(paste("Hb", A[1][c]," (%)",sep=""))

だったかったことは私を超えている。

+6

'paste0'はplotmath関数ではありません。 'paste'はplotmath関数ですが、' base :: paste'関数とは異なるセマンティクスを持っています。特に、 'sep'引数はありません。 –

+0

そしてR式では、 '%'のような特殊文字や "in"のような予約語を引用する必要があります。 –