2016-06-16 10 views
2

私は2つのデータフレームを持っています:1つはbarchartにバーを作成するために使用し、もう1つはgeom_rectを使ってバーの後ろに影付きの「ターゲット領域」を作成します。ここ影付きターゲット領域をggplot2に追加するbarchart

は、例えばデータである:

test.data <- data.frame(crop=c("A","B","C"), mean=c(6,4,12)) 
target.data <- data.frame(crop=c("ONE","TWO"), mean=c(31,12), min=c(24,9), max=c(36,14)) 

Iは、標的領域内のラインのtarget.dataのバー及び手段のためtest.dataの手段で開始:

library(ggplot2) 
a <- ggplot(test.data, aes(y=mean, x=crop)) + geom_hline(aes(yintercept = mean, color = crop), target.data) + geom_bar(stat="identity") 
a 

enter image description here

これまでのところ非常に優れていましたが、影付​​き領域を追加してtarget.dataの最小範囲を表示しようとすると問題が発生します。陰影の付いた領域はうまく表示されますが、何とかtarget.dataの作物がx軸に追加されています。なぜこれが起こっているのか分かりません。私はバーグラフのx軸にそれらの余分名を追加することなく、geom_rect図形を追加することができますどのように

b <- a + geom_rect(aes(xmin=-Inf, xmax=Inf, ymin=min, ymax=max, fill = crop), data = target.data, alpha = 0.5) 
b 

enter image description here

+0

このプロットを使って、具体的にはgeom_rect()を具体的にどのように視覚化しようとしていますか? – Nate

+0

あなたの 'x'変数の名前はcropですが、2番目のデータセットの変数は異なる値です。 'geom_rect'に' inherit.aes = FALSE'を追加するとこれを修正する必要があります。 – aosmith

答えて

1

これはあなたの質問に対する解決策ですが、より理解しやすいプロットを作成できる可能性があるため、問題をよりよく理解したいと思います。あなたはあなたのgeom_rect()呼び出しにaes(x = NULL)を追加するだけです。混乱を最小限に抑えるために、add.dataの変数 'c​​rop'を 'brop'に変更する自由を取った。 ggplotで

test.data <- data.frame(crop=c("A","B","C"), mean=c(6,4,12)) 
add.data <- data.frame(brop=c("ONE","TWO"), mean=c(31,12), min=c(24,9), max=c(36,14)) 

ggplot(test.data, aes(y=mean, x=crop)) + 
    geom_hline(data = add.data, aes(yintercept = mean, color = brop)) + 
    geom_bar(stat="identity") + 
    geom_rect(data = add.data, aes(xmin=-Inf, xmax=Inf, x = NULL, ymin=min, ymax=max, fill = brop), 
    alpha = 0.5, show.legend = F) 

(美学又はAESのすべてを呼び出す)intialコールから継承される:

ggplot(データ、AES(X = FOO、Y =バール))。

つまり、geom_rect()、geom_hline()などのレイヤーに関係なく、ggplotはxに割り当てる 'foo'とyに割り当てる 'bar'を探しています。 。だから、Aeosmithは、inherit.aes = FALSEを持つレイヤーのすべての継承されたaethesitcsをクリアすることも、NULLに再割り当てすることで一度に単一の変数をノックアウトすることもできることを指摘しました。

+0

これはなぜ起こったのかの説明を追加することがありますか?もう一つの方法は、 'geom_rect'で' inherit.aes = FALSE'を使うことです。そうすれば、グローバルな美学は継承されません。 – aosmith

+0

解決に感謝します!理にかなって...私はggplot2の新機能で、格子から来ています。はい、表示されている例はかなり醜いですが、単なる例です...私の実際のアプリケーションは、より解釈可能です。 –

関連する問題