2011-08-02 55 views
15

Rのggplot2データ視覚化パッケージのgeom_tile()レイヤーに、セルにデータが含まれていない場合は描画されません。例えば。 http://docs.ggplot2.org/current/geom_tile.htmlと "欠損値"を検索します。ggplot2 geom_tileの値が空白でないようにする

すべてのタイルに最小値を表示するようにこの動作を変更したいと思います。これは可能でしょうか?

追加コンテキスト:私は

stat_density2d(aes(x=x,y=y, fill=..density..), geom="tile", contour=FALSE) 

を使用する場合、私は非常に少ない密度の地域に非常によく似た外観をしていない密度の領域をしたいと思います。今のように、色のスペクトルが青から赤、背景が白の場合、タイルにデータがない場合は白であり、タイルにデータポイントが1つある場合は青です。

データに疑似カウントを追加することは可能ですが、疑似カウントの配布方法を事前にどのように知っていますか?ファセッティングがある場合は?

+0

にオプションで固定することができ、私は(再現性の例は大いに役立つでしょう)あなたが探しているものを全くわからないんだけど、おそらくあなたは+ '試みることができますscale_fill_gradient(limits = c(0、...)) 'と置き換え、' ... 'を適切な最大値に置き換えますか? – joran

答えて

6

この問題はscale_fill_continuous

scale_fill_continuous(na.value = 'salmon') 
23

データがグリッドのようなデータの場合は、でNAの別のgeom_tile()を追加する方法はありますか?

# Generate data 
pp <- function (n, r = 4) { 
    x <- seq(-r*pi, r*pi, len = n) 
    df <- expand.grid(x = x, y = x) 
    df$r <- sqrt(df$x^2 + df$y^2) 
    df$z <- cos(df$r^2)*exp(-df$r/6) 
    df 
} 
pp20 <- pp(20)[sample(20*20, size = 200),] 

df_grid <- expand.grid(x = unique(pp20$x), y = unique(pp20$x)) 
df_merge <- merge(pp20, df_grid, by = c("x", "y"), all = TRUE) 

# Missing values 
ggplot(df_merge, aes(x = x, y = y)) + 
    geom_tile(data = subset(df_merge, !is.na(z)), aes(fill = z)) + 
    geom_tile(data = subset(df_merge, is.na(z)), aes(colour = NA), 
    linetype = 0, fill = "pink", alpha = 0.5) 

an example

+0

これは合理的なアプローチのようです。ありがとう! – momeara

+2

私はコードを試しましたが、NAの伝説は表示されませんでした.. ggplot2の作者は、この記事でもこの投稿に言及しました:https://groups.google.com/forum/#!topic/ggplot2/MbYp5K03X3wあなたはNAの伝説を得ましたか? – olala

4

この答えは、おそらく少しも「かわいい」かもしれませんが、一つの解決策は、単にあなたの規模の最小色にあなたのプロットの背景色を変更するだろうか?例えば:あなたのプロットは、より複雑な構造を持っており、これはあなたがそれが起こることを望んでいない地域で背景が青作り終わる場合

+ opts(plot.background = theme_rect(colour = "blue") 

することは、あなたが通過に延びる第1 geom_rect層をプロットできデータの範囲のみ。後世のために

+0

これは賢明なアイデアと覚えておくべき良いトリックです。ありがとう! – momeara

4

は、ここにjoranの答えでggplot2バージョン1.9.3

+ theme(panel.background=element_rect(fill="blue", colour="blue") 
  • をと互換性の適切なソリューションである、plot.backgroundpanel.backgroundがあるなど、タイトルと凡例を含めた全体のプロットでありますデータが表示される領域。 ggplot2の最新バージョンで

  • optsthemeに置き換えられているとtheme_rectelement_rectに置き換えられました。

  • element_rectを指定する場合、colorは矩形の境界であり、fillは矩形の内側です。

私はもともと、

+ geom_rect(aes(xmin=-Inf, xmax=Inf, ymin=-Inf, ymax=Inf), fill="blue") 

を使用していたが、背景の上にgeom_rasterではなくgeom_tileを追加し、pdf出力を生成するとき、PDFビューアは、実質的に、より多くのCPUを使用して、プロットをレンダリングに非常に苦労していましたサイクルとメモリ。

関連する問題