2016-01-06 9 views
11

私はfacet_gridを使って一連のドットプロットを一緒に生成しようとしています。このようにして、私はgeom_dotplotがfacet_gridのscale = "free_y"引数に応答しないように見えることに気付きました。ggplot2:facet_gridでgeom_dotplotを使用しているときに自由軸のスケールがありません

require(ggplot2) 

#Example data 
set.seed(3) 
df = data.frame(Gene = rep(c("a", "b", "c", "d"), each=20), 
       ToD = rep(c("Morning", "Evening"), times = 40), 
       Expression = c(runif(20, min=0, max=10), 
           runif(20, min=0, max=1), 
           runif(20, min=0, max=1000), 
           runif(20, min=0, max=100))) 

#Box plots of example data 
ggplot(df, aes(x = ToD, y = Expression)) + 
    geom_boxplot() + 
    facet_grid(Gene ~ ., scales = "free_y") 

#Dot plots of example data 
ggplot(df, aes(x = ToD, y = Expression)) + 
    geom_dotplot(binaxis = "y", stackdir = "centerwhole") + 
    facet_grid(Gene ~ ., scales = "free_y") 

そして、ここで私が現在使用しているRとggplot2のバージョンです:ここ

は、いくつかのサンプルコードです

  • Rバージョン3.2.2(2015年8月14日)
  • ggplot2_1.0.1.9003

だから私は、ボックスプロットを生成する際に、y軸ですべてが期待どおりに動作します各ファセット行に対して適切にスケーリング:

Box plots of test data

はしかし、ドットプロットは、あらゆる面行に対して同じy軸のスケールを維持する:

Dot plots of test data

私は既知のバグについて読みましたggplot2では、フリースケールを指定するときにcoord_flipとfacet_gridが一緒に動作しません。これは同じ問題に関連していますか?

それぞれのプロットを個別に生成し、それらをgrid.arrangeと組み合わせることはできますが、これは私にとっては面倒です。私は他の面取りされたプロットとこれらのドットプロットを整列させようとしています、そして私はgrid.arrangeを使ってそれらを再生成する必要性を避けたいと思います。何かご意見は?

何か助けてもらえますか?ありがとうございました。詳細をお知らせください。

+0

私は 'ggplot2_1.0.1'と' Rのバージョン3.2.2を使用してエラーを再現することができませんでした(2015-08-14) '、うまく動作します – mlegge

+0

私はggplot2_2.0.0に更新しましたが、私はまだ同じ問題を抱えています。ダウングレードする必要があるかもしれないと思いますか? –

+2

私は 'ggplot2_2.0.0'と同じRのバージョンでエラーを再現できました – mlegge

答えて

3

私は?geom_dotplotの文書を読んでいます。どうやら、binpositions-optionは "all"(すべてのデータをまとめて)または "bygroup"に設定することができます。デフォルト。このように、グループとしてファセットの両方の遺伝子を用いて、binpositionsは変えることができ、少なくとも遊離のy軸は、返さ:

ggplot(df, aes(x = ToD, y = Expression, group=Gene)) + 
    geom_dotplot(binaxis = "y", stackdir = "centerwhole", binpositions="bygroup") + 
    facet_grid(Gene ~ ., scales = "free_y") 

enter image description here

しかし、今、x軸上のグループが消失しました。そこよりよい解決策は、おそらくですが、ジーンとToDの間の相互作用によってグループ化すると、それを解決するように見えた:

ggplot(df, aes(x = ToD, y = Expression, group=interaction(Gene,ToD))) + 
    geom_dotplot(binaxis = "y", stackdir = "centerwhole", binpositions="bygroup") + 
    facet_grid(Gene ~ ., scales = "free_y") 

enter image description here

+0

私はまだこれがgeom_boxplot関数とfacet_grid関数の間の意図された相互作用であるかどうか(これはあまりにも複雑に思えます)、またはこれがバグであるかどうか疑問に思っています。いずれにせよ、あなたのソリューションは私の現在の問題を解決します。他の誰かが寄稿するのを妨げないように、答えを記入する前に、それを1日か2日開いておきます。ありがとうございました。 –

関連する問題