2017-07-07 8 views
0

私はggplot2でいくつかの結果をプロットしています。ggplot2のスケール関数で式を正しく使うにはどうすればいいですか?

category comparison value 
1 A   deltaXT/FT 6807 
2 B   deltaXT/FT 11894 
3 C   deltaXT/FT 1215 
4 D   deltaXT/FT 42862 
5 E   deltaXT/FT 34313 
... 

合計4つの比較カテゴリ-Eに細分それぞれ、同一のデータフレーム内(プロットはthisのように見える)がある:データは、このような構造化されたデータフレームに編成されます。 私の目的はDeltaのギリシャシンボルを使って、 "deltaXT/FT"を "ΔXT/ FT"と置き換えることです。

ggplot(data=vars, aes(x=category, y=value, fill=comparison)) + 
... 
scale_fill_manual(values=c("deltaXT/FT"="#6FA9BC"), ...) 

私はscale_fill_manualに「deltaXT/FT」を使用しながら、基本的に、すべてがうまく動作します:私はこのように、バーの色を定義するには、「比較」欄を使用しているプロットで

元のデータフレーム内にある。私はexpression(Delta * "XT/FT")="#6FA9BC", ...)を使用しようとすると、私はこのエラーを取得:expression()がそこにキーとして使用することができませんでした。

Error: unexpected '=' in: 
... 
scale_fill_manual(values=c(expression(Delta * "XT/FT"))=" 

問題がscale_fill_manual()であると思われます。 StackOverflowで他のスレッドを読んだところ、bquote(expression()=value)を使用するように勧められましたが、エラーは使用時に変更されませんでした。

この問題を回避し、凡例に素晴らしいΔXT/ FT名を付ける方法に関する提案はありますか?

EDIT:必要なところでRscriptにΔ文字をコピーして貼り付けますが、このような状況ではexpression()をキーとして使用することができます。

答えて

0

comparisonに関連付けられたラベルを変更するだけで、それをマッピングする値ではありません。

... + 
scale_color_manual(values = c("deltaXT/FT" = "#6FA9BC"), 
        labels = c("deltaXT/FT" = expression(Delta * "XT/FT"))) 

あるいは、完全なプロットで:

library(ggplot2) 
ggplot(data=df, aes(x=category, y=value, color=comparison)) + 
    geom_point(size = 5) + 
    scale_color_manual(values=c("deltaXT/FT"="#6FA9BC"), 
        labels = expression(Delta * "XT/FT")) 

データ:

df <- read.table(text = ' category comparison value 
1 A   deltaXT/FT 6807 
       2 B   deltaXT/FT 11894 
       3 C   deltaXT/FT 1215 
       4 D   deltaXT/FT 42862 
       5 E   deltaXT/FT 34313', header = TRUE) 
関連する問題