2012-03-23 5 views
23

ggplot2に設定された「ヒント」データを使用しています。私がしたら条件付きでfacet_gridでパネルの背景を変更しますか?

sp = ggplot(tips,aes(x=total_bill, y = tip/total_bill)) + 
     geom_point(shape=1) + 
     facet_grid(sex ~ day) 

プロットがうまくいきます。しかし、私は今、 "Fri"の下のプロットのパネルの背景を変更したいと思います。これを行う方法はありますか?

パラメータを渡すことで条件付きで色を変更できますか?たとえば、3点以上が0.1未満の場合は、パネルの背景(特定のパネルのみ)を特定の色に変更し、他のすべてはデフォルトの明るい灰色のままにします。

答えて

50

ggplot2がある中で何かを行うための一般的なルール、

  1. あなたはGEOM
  • パスデータフレームをプロットしたい情報を符号化したデータフレームを作成します。

    これは、変更したいプロットの特定の側面のために、この場合は少し複雑になります。プロットのデータ要素(すなわち、geom)を非データ要素(すなわちテーマ)から分離する方法で、プロットの背景が「非データ」カテゴリに該当するように設計された力(ggplot2

    基本グリッドオブジェクトmanuallyを変更するオプションは常にありますが、これは面倒で、ggplot2のバージョンによって詳細が異なる場合があります。代わりに、私たちは、ハドレーが指し示す "ハック"をthisで採用します。

    #Create a data frame with the faceting variables 
    # and some dummy data (that will be overwritten) 
    tp <- unique(tips[,c('sex','day')]) 
    tp$total_bill <- tp$tip <- 1 
    
    #Just Fri 
    ggplot(tips,aes(x=total_bill, y = tip/total_bill)) + 
         geom_rect(data = subset(tp,day == 'Fri'),aes(fill = day),xmin = -Inf,xmax = Inf, 
          ymin = -Inf,ymax = Inf,alpha = 0.3) + 
         geom_point(shape=1) + 
         facet_grid(sex ~ day) 
    

    enter image description here

    #Each panel 
    ggplot(tips,aes(x=total_bill, y = tip/total_bill)) + 
         geom_rect(data = tp,aes(fill = day),xmin = -Inf,xmax = Inf, 
          ymin = -Inf,ymax = Inf,alpha = 0.3) + 
         geom_point(shape=1) + 
         facet_grid(sex ~ day) 
    

    enter image description here

  • +0

    おかげでから来ています助けを求めて間違いなく便利です。 – broccoli

    +3

    panel.backgroundと上記のgeom_rectの設定は、geom_rasterの後ろでは、ラスタの後ろに「何もない」ときに最適化が行われるため、動作が異なることに注意してください。 pdfとして保存すると、geom_rectバージョンはかなり大きなファイルとなり、ほとんどのPDFビューアではほとんどオープンできなくなります! – momeara

    +0

    連続した機能とスケールでこれを行うことは可能ですか? – UnivStudent

    1

    私がコメントすることはできませんまだ..ので、ここで彼の答えをjoranするために追加の答えがあります。

    透明度の設定に問題がある場合、alpha = 0.2と設定しても差異に気付かない場合は、ggplotに与えたデータが原因である可能性があります。

    "これは私には困惑していたので、私はGoogleに行って、何か新しいことを学びました(例の中でいくつかの不自然さを取り除いてしまった)。効果的にあなたが望む半透明性を無効化し、互いの上、。だから、これを克服する唯一の方法は、長方形を別々のDF座標ハードコードにある」

    この答えはずっと geom_rect and alpha - does this work with hard coded values?

    関連する問題