2009-08-21 8 views
18

と表示されました。グラフのパネルにはggplot2latticeの両方を実験しています。私はggplot2モデルの周りに私の心をラップする少し問題があります。2つのベクトルベクトルをGGPLOT2散布図にプロットすると、R

xyplot(Predicted_value + Actual_value ~ x_value | State_CD, data=dd) 

、それは各列と各State_CDのために私にパネルを与えるだろう:私はこれを行うことができますlattice

:具体的には、どのように私は、各パネル上の2つのデータセットで散布図をプロットします

私はggplot2で1列操作を行うことができます。私は完全に理解することはできませんどのような

pg <- ggplot(dd, aes(x_value, Predicted_value)) + geom_point(shape = 2) 
     + facet_wrap(~ State_CD) + opts(aspect.ratio = 1) 
print(pg) 

は、上記ggplotにActual_valueを追加する方法です。

EDITハドリーは、再現可能な例でこれが本当に簡単だろうと指摘しました。ここにはうまくいくようなコードがあります。 ggplotでこれを行うには、より簡潔な方法がありますか? ggplotに別のポイントセットを追加する構文が、最初のデータセットを追加するのと異なるのはなぜですか?

library(lattice) 
library(ggplot2) 

#make some example data 
dd<-data.frame(matrix(rnorm(108),36,3),c(rep("A",24),rep("B",24),rep("C",24))) 
colnames(dd) <- c("Predicted_value", "Actual_value", "x_value", "State_CD") 

#plot with lattice 
xyplot(Predicted_value + Actual_value ~ x_value | State_CD, data=dd) 

#plot with ggplot 
pg <- ggplot(dd, aes(x_value, Predicted_value)) + geom_point(shape = 2) + facet_wrap(~ State_CD) + opts(aspect.ratio = 1) 
print(pg) 

pg + geom_point(data=dd,aes(x_value, Actual_value,group=State_CD), colour="green") 

格子出力は次のようになりますだけでなく、私は私を助けている可能性があることthis R Help thread渡って走った質問を投稿した後 alt text http://www.cerebralmastication.com/wp-content/uploads/2009/08/ggplot.png

+0

あなたが再現可能な例 – hadley

+0

ええ、それは良い点だが提供されている場合には提案を提供するためにはるかに容易になります。完全な例を作らないことは私の怠け者でした。私はいくつかのことをやろうとします。あなただけがggplot()の部分に設定されたデフォルトから物事を変更する必要が –

答えて

19

meltでこれを行うのは簡単です。ウィットに:ここで

qplot(x_value, value, 
     data = melt(dd, measure.vars=c("Predicted_value", "Actual_value")), 
     colour=variable) + facet_wrap(~State_CD) 

が、それは私のために次のようになります。 alt text http://www.cs.princeton.edu/~jcone/example.png

meltが実際に行っているかのアイデアを取得するには、ここでのヘッドです:

> head(melt(dd, measure.vars=c("Predicted_value", "Actual_value"))) 
    x_value State_CD  variable  value 
1 1.2898779  A Predicted_value 1.0913712 
2 0.1077710  A Predicted_value -2.2337188 
3 -0.9430190  A Predicted_value 1.1409515 
4 0.3698614  A Predicted_value -1.8260033 
5 -0.3949606  A Predicted_value -0.3102753 
6 -0.1275037  A Predicted_value -1.2945864 

あなたが見る、それは1列にPredicted_valueとActual_valueを「融解は」valueと呼ばれ、他の列は、あなたはそれが最初から来た何列を知らせるvariableと呼ばれる追加します。

1

alt text http://www.cerebralmastication.com/wp-content/uploads/2009/08/lattice.png

とggplotは次のようになります。私はこれを行うことができるように見えます:

pg + geom_line(data=dd,aes(x_value, Actual_value,group=State_CD), colour="green") 

これは良いことですか? 2番目の項目を追加すると最初の項目とはまったく異なる構文を持つため、私にとっては奇妙です。

+0

注意。あなたの場合、新しいy値と色を設定するだけです。 + geom_point(shape = 2)+ facet_wrap(〜State_CD)+ opts(aspect.ratio = 1)+ geom_line(aes(yActual_value、color = "green"); ggplot(dd、aes(x = x_value、y =予測値) 。「) – Thierry

2

データの形式を少し変更して、y軸の変数を1つ持ち、それが予測変数か実際の変数かを示す追加の要素変数を持つことができます。

これはあなたのやりたいようなものですか?

dd<-data.frame(type=rep(c("Predicted_value","Actual_value"),20),y_value=rnorm(40), 
       x_value=rnorm(40),State_CD=rnorm(40)>0) 
qplot(x_value,y_value,data=dd,colour=type,facets=.~State_CD) 
+0

はああ..私はそれがggplotドキュメントの例では、やっていることだと思うそれは確かに –

6

更新:今、数年後、私はほとんど常にggplot2で(tidyr package経由)ジョナサンのメソッドを使用します。以下の私の答えはちょっとしたことですが、3つ以上の変数があるときは速く退屈です。


私は、ハドレーは、より良い答えを持っていますが、確信している - ggplot(dd,aes())構文は(と思う)、主に一つだけの変数をプロットするために意図されているため、構文が異なります。 2ために、私が使用する:

ggplot() + 
geom_point(data=dd, aes(x_value, Actual_value, group=State_CD), colour="green") + 
geom_point(data=dd, aes(x_value, Predicted_value, group=State_CD), shape = 2) + 
facet_wrap(~ State_CD) + 
theme(aspect.ratio = 1) 

はそれを第二と同じ構文を与える()ggplotの指摘の第1セットを引っ張ります。構文が同じでggplot2の中核となる「グラフィックの文法」が強調されているので、これを扱いやすくしています。ggplot2のためにあなたが本当にあなたがそれを飾るためにしたいかを示す因子として別の列と1列にすべてのy軸のものをしたい:ちょうどイアンが提案した内容にフォローアップ

+0

@MichaelChirico確かに私の思考を助け、 'aspect.ratio'は()' 'をテーマに今ある機能更新回答 - !。の感謝をこれを指摘している。 –

関連する問題