R を使用して GGPLOT2 散布図に 2 つのデータ ベクトルをプロットする

StackOverflow https://stackoverflow.com/questions/1313954

  •  19-09-2019
  •  | 
  •  

質問

両方とも実験してみました ggplot2 そして lattice データのパネルをグラフ化します。考えをまとめるのに少し苦労しています ggplot2 モデル。特に、各パネルに 2 つのデータ セットを含む散布図をプロットするにはどうすればよいですか:

lattice これを行うことができます:

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

これにより、各列を含む各 State_CD のパネルが得られます

1つの列を実行できます ggplot2:

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 を追加する方法です。

編集 Hadley 氏は、再現可能な例があれば、これは本当に簡単になるだろうと指摘しました。これが機能すると思われるコードです。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")

ラティスの出力は次のようになります。alt text
(ソース: 脳咀嚼.com)

ggplot は次のようになります。alt text
(ソース: 脳咀嚼.com)

役に立ちましたか?

解決

ただ、イアンが提案した内容にフォローアップ:ggplot2のためにあなたが本当にあなたがそれを飾るためにしたいかを示す因子として別の列と1列のすべてのy軸のものにしたいです。 meltでこれを行うことは容易です。ウィットに:

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

ここでは、それは私のために次のようになります。 altテキスト
<サブ>(ソース: princeton.edu の)

実際に行っていること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

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

他のヒント

アップデート:数年が経ち、私はほとんど常にジョナサンの方法を使用しています( 整頓パッケージ)ggplot2を使用します。以下の私の答えは、いざというときには機能しますが、変数が 3 つ以上あるとすぐに退屈になってしまいます。


Hadley がより良い答えを持っていると確信していますが、構文は異なります。 ggplot(dd,aes()) 構文は主に 1 つの変数だけをプロットすることを目的としている (私はそう思います)。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() から取り出すと、2 番目と同じ構文が得られます。構文が同じであり、ggplot2 の核となる「グラフィックスの文法」を強調しているため、これは扱いやすいと思います。

あなたはちょうどあなたが1、y軸の変数を持っているように、それは予測または実際の変数であるかどうかを示す追加の因子変数で、あなたのデータの形式を少し変更したい場合があります。

これは何をしようとするようなものですか?

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)

だけでなく、私はこのnoreferrer">

scroll top