2016-12-08 11 views
0

私はフィギュアにいくつかの変数をプロットし、プロット上のポイントの色を他の変数にリンクしています。これはggplot2で行うのは簡単で、次の図を生成します。ggplot2のカラーグラデーションの凡例にユニットラベルを追加する

require(ggplot2) 
miss <- sample(c(NA, 1:5), nrow(mtcars), rep = TRUE) 
qplot(mpg, wt, data = mtcars, colour = miss) + 
    scale_colour_gradient(na.value = "black") 

enter image description here

しかし、私は「ミス」伝説のユニットを持っていると思います。具体的には、それらの単位をワットメートル^ -2時間^ -1(適切に書式付きの上付き文字)にします。これを追加する最も単純な方法は何ですか?

答えて

2

特別なプロットマス式を含め、必要なラベルテキストを含むベクトルを作成し、parseを使用してプロット内で正しく表示される式に評価します。次に、プロットコードで、labels引数に対応するラベルを付けて、breaks引数を使用して目的のブレークを設定します。

labs = parse(text=paste0(1:5, "~watts%.%meter^-2")) 

qplot(mpg, wt, data = mtcars, colour = miss) + 
    scale_colour_gradient(na.value = "black", breaks=1:5, labels=labs) 

enter image description here

UPDATE:あなたは伝説の横にユニットを置くことができますが、あなたはおそらく(配置権を取得するためにそれを手動で微調整する必要がありますけれどものグロブ構造を理解して誰か私よりもggplotがそれを自動化できるかもしれない)。また、私はクリッピングをオフにしているにもかかわらず、伝説に近づくと、伝説のgrobはユニットの注釈をカバーします。私はそれをどのように修正するか分からない。場合

p1 = qplot(mpg, wt, data = mtcars, colour = miss) + 
    scale_colour_gradient(na.value = "black") + 
    annotate(x=max(mtcars$mpg) + 0.25*diff(range(mtcars$mpg)), 
      y=mean(range(mtcars$wt)) - 0.1, 
      label=lbl, geom="text", parse=TRUE, angle=-90, size=3.3) + 
    coord_cartesian(xlim=range(mtcars$mpg)) + 
    theme(plot.margin=unit(c(0.5,2,0.5,0.5), "lines")) 

# Turn off clipping 
gt <- ggplot_gtable(ggplot_build(p1)) 
gt$layout$clip <- "off" 
grid.draw(gt) 

enter image description here

+0

解決策になるだけで伝説で上にそれを望んでいたこの "である単一のラベルにすることは可能ですワット*メートル^ -2 "、おそらく90度回転し、カラーグラデーションバーの左側に? – colin

+1

更新されたコードを参照してください。 – eipi10

1

あなたは、これが

require(ggplot2) 
miss <- sample(c(NA, 1:5), nrow(mtcars), rep = TRUE) 
qplot(mpg, wt, data = mtcars, colour = miss) + 
scale_colour_gradient(na.value = "black", name = bquote('' ~W ~ m^-2~h^-1*'')) 

enter image description here

関連する問題