2013-04-08 8 views
6

ggplot2でRベースプロットのより良いバージョンを作成しようとしています。私はggplot2のスタイルとカスタマイズが好きなので、共通の伝説だけでなく、私のデータは、いくつかの(しかし異なる)治療について同じ2つの観察グループを含む3つの別個のデータセットからなる。したがって、私は別の因子レベルで共通の凡例を持つ1つのグラフに3つの別々のプロットを生成したいと思います。私のポイントを説明するために、ここで最初の画像は、私がこれまでのRベースで生成されたものです: r base plot closest plot realisation複数のファセットを持つggplot2のクラスタ化されたバーグラフから空の要素を削除します

私は自分のデータと全く同じ構造を有しているダミーデータとggplot2プロットを生成しようとしました:

foo<-data.frame(c(letters,letters),c(rep('T1',26),rep('T2',26)), 
runif(52),rep(c(rep('Ori1',12),rep('Ori2',8),rep('ori3',6)),2)) 
names(foo)<-c('Treatment','Type','Count','Origin') 

a<-ggplot(foo,aes(x = factor(Treatment),y = Count)) 
a+ facet_grid(Origin~., scales="free_y", space="free") + 
geom_bar(stat="identity",aes(fill=factor(foo$Type)),position="dodge") 
+theme_bw()+theme(axis.text.x=element_text(angle=60,hjust=1))+coord_flip() 

これは私に次の望ましくない結果をもたらします。 failed ggplot2 image

は、私は、スタックオーバーフローのトピックを認識していRemoving Unused Factors from a Facet in ggplot2How can I remove empty factors from ggplot2 facets?は、しかし、彼らは私がここに実現しようとするクラスタ化された棒グラフに対処していないと私は、しかし、今どのようにそれを解決するためにはありません、彼らは問題がある気がします。すべてのポインタは大歓迎です。

+3

これが解決するまで(複雑です)、あなたは 'coord_flip'を省略し、代わりに' facet_wrap(〜Origin、scales = "free_x") 'を使用していると思います。 – joran

+0

@joranコメントをいただきありがとうございますが、問題は解決しません。ここでは、 'coord_flip'は実際に問題に寄与しません。主な問題は、ファセット全体で 'position =" dodge "を保持する方法です。たぶん、私は実際にベースグラフを再現したくないということを明確にする必要があります。私は、プロットの本質をggplot2スタイルで使用できるようにしたいと考えています。 –

+1

私が提案したことを実際に試したとは思わない。現時点では、 'coord_flip'は' scales = "free"でうまくいくとは限りません。これは既知の問題です。 – joran

答えて

7

は、私のコメントを説明するために:あなたはcoord_flipを追加し、free_yに切り替える場合は、ある自由なスケールのいくつかのタイプで動作していないcoord_flipに関する特定のエラーを取得することを

enter image description here

a<-ggplot(foo,aes(x = factor(Treatment),y = Count)) 
a+ facet_wrap(~Origin, scales="free_x") + 
    geom_bar(stat="identity",aes(fill=factor(Type)),position="dodge") + 
    theme_bw() + 
    theme(axis.text.x=element_text(angle=60,hjust=1)) 
あなたの問題の原因。

+1

'fill = factor(foo $ Type)'に 'foo $'があるのはなぜですか?それは必要ではないでしょうか?実際には、私が思っていたものからかなり変化しています: 'ggplot(data = foo、aes(x = factor(Treatment)、y = Count))+ geom_bar(stat =" identity "、aes(fill = factor – Arun

+1

@Arunあなたが正しいです、私はちょうどコピー+コードを貼り付けていましたが、未使用の要素を削除することに重点を置いていました。 – joran

+0

両方ありがとう!どうやら原点〜。元のfacet.wrapには私が望むものは生成されませんでしたが、foo $ Typeの代わりにTypeを使うだけでエラーになりました。 @アーン:あなたのコメントは、私が欲しかったものを私にくれました。 @joran:このcoord_flipで一般的なエラーを特定してくれてありがとう...普通の積み重ねられたbarplotに固執するでしょう。 –

関連する問題