2012-04-14 14 views
1

私は回転したX軸を持つ散布図を見ています。基本的に、私は2つのY軸間の相関をプロットしたいと思います。理想的には、私は、x軸は時間を表し、Y軸は相関2つのY軸の間のプロット相関

data <- data.frame(words = c("Aliens", "Aliens", "Constitution", "Constitution", "Entitled", "Entitled"), 
       dates = as.Date(c ("2010-01-05", "2010-02-13", "2010-04-20", "2010-06-11","2010-03-18", "2010-09-13")), 
        Rep = c(.18, .14, .16, .45, .33, .71), Dem = c(.16, .38, .24, .11, .59, .34)) 

を表現したいのですがこれは私がこれまで行うことができたものです。私はそれが本当にポイントを得るとは思わない。私は相関と色でサイズを月ごとにすることができましたか?

plot(x=data$dates, y=data$Rep, ylim=c(0,1.1*max(data$Rep)), 
col='blue', pch = 15, 
main='Rep Correlations stock close', xlab='date', ylab='Republican') 
axis(2, pretty(c(0, 1.1*max(data$Rep))), col='blue') 
par(new=T) 
plot(x=data$date, y=data$Dem, ylim=c(0,1.1*max(data$Dem)), 
col='green', pch = 20, 
xaxt='n', axes = F, xlab = '', ylab='') 
axis(4, pretty(c(0, 1.1*max(data$Dem))), col='green') 
mtext("Democrat",side=4) 

どのような考えですか?

+0

あなたはRep'と '' Dem'との相関関係を見たい場合は、ヨーヨーは、 2 y軸の代わりに2変量プロットを使用する必要があります。あなたは、あなたが示唆するように、時間をエンコードするために色を使用することができますが、もう一つの良い方法はモーションチャートです。あなたも言及したように、これによりポイントサイズを使って3番目の変数をエンコードすることさえできます。これは「モーションバブルチャート」です。効果を非常にうまく示す例は次のとおりです。http://code.google.com/p/google-motion-charts-with-r/ –

+0

ありがとう!モーションチャートを使って遊んだことがありますが、私が見つけた/コードから、グーグルヴィズバージョンでは、時間は数日または数年しかできません。言い換えれば、私は月ごとに順序を得ることができませんでした。私はまた、二変量プロットにあまり慣れていない。これはあなたが意味することですか? [グラフギャラリー](http://addictedtor.free.fr/graphiques/graphcode.php?graph=104) – crock1255

答えて

2

上記@ JohnColbyさんのコメントフォローアップ(とあなたがそれを助けることができる場合は、ないデュアルy軸プロットを作成する必要がある理由の引数に対して、How can I plot with 2 different y-axes?http://rwiki.sciviews.org/doku.php?id=tips:graphics-base:2yaxesを参照)、方法について:

dat <- data ## best not to use reserved words -- it can cause confusion 
library(ggplot2) 
theme_update(theme_bw()) ## I prefer this theme 
## code months as a factor 
dat$month <- factor(months(dat$dates),levels=month.name) 
dat <- dat[order(dat$dates),] 
qplot(Rep,Dem,colour=month,data=dat)+ 
    geom_path(aes(group=1),colour="gray")+geom_point(alpha=0.4)+ 
    geom_text(aes(label=words),size=4) 

は(追加ポイント、再度プロット点間の線彼らはラインによって隠されていないので、単語を追加するとかわいいですが、完全なデータセットのためにあまりにも多くの混乱であるかもしれない)

enter image description here

(両方の変数が同じスケールで測定されている)、この特定の文脈では連続変数として

またはエンコード日

ggplot(dat,aes(Rep,Dem,colour=dates))+ 
    geom_path(aes(group=1),colour="gray")+geom_point(alpha=0.4)+ 
    geom_text(aes(label=words),size=4)+ 
    expand_limits(x=c(0,0.9)) 
ggsave("plotcorr2.png",width=6,height=3) 

enter image description here

、日付軸に対してそれらの両方をプロットすると間違って何もありません。

library(reshape2) 
library(plyr) 
m1 <- rename(melt(dat,id.vars=c("words","dates","month")), 
      c(variable="party")) 

ggplot(m1,aes(dates,value,colour=party))+geom_line()+ 
    geom_text(aes(label=words),size=3)+ 
    expand_limits(x=as.Date(c("2009-12-15","2010-10-01"))) 
ggsave("plotcorr3.png",width=6,height=3) 

enter image description here

+0

私はこのテイクが好きです。二軸問題の理解は、私が異なるスケールにあった場合に起こりました。私の考えは、このケースでは、彼らは同じ尺度であるので大丈夫でしょうが、私はそれが好きです。 ありがとう! – crock1255

+0

あなたは正しいです。私は思っていませんでした。この場合、両方の変数を同じスケールでプロットすることは問題ありません。 'matplot'は基底のRグラフィックスでそれを行い、再構成は' ggplot'の好ましいアプローチです。 –

関連する問題