R を使用して GGPLOT2 散布図に 2 つのデータ ベクトルをプロットする
質問
両方とも実験してみました 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")
ラティスの出力は次のようになります。
(ソース: 脳咀嚼.com)
ggplot は次のようになります。
(ソース: 脳咀嚼.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)
ここでは、それは私のために次のようになります。
の
<サブ>(ソース: 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)