R 绘制两个Y轴之间的相关性

R 绘制两个Y轴之间的相关性,r,graph,ggplot2,visualization,R,Graph,Ggplot2,Visualization,我在看一个X轴旋转的散点图。基本上,我想绘制两个Y轴之间的相关性。理想情况下,我希望x轴代表时间,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", "

我在看一个X轴旋转的散点图。基本上,我想绘制两个Y轴之间的相关性。理想情况下,我希望x轴代表时间,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 ))

有什么想法/提示吗?

在上面@JohnColby的评论之后(如果可以的话,请参阅为什么不应创建双y轴图的论点),如何:

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)

在这个特定的环境中(两个变量在相同的尺度上测量),根据日期轴绘制它们也没有什么错:

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)
library(重塑2)
图书馆(plyr)

m1如果要查看
Rep
Dem
之间的相关性,则应使用双变量图,而不是2个y轴。你可以像你建议的那样用颜色来编码时间,但另一个好方法是用运动图表。正如您还提到的,这甚至可以使用点大小对第三个变量进行编码。这是一张“运动气泡图”。下面是一个很好地显示效果的示例:谢谢!我玩弄了一下运动图,但从我能找到的代码来看,googlviz版本只允许以天或年为单位的时间。换句话说,我无法让日期按月份排序。我也不太熟悉二元图。这就是你的意思吗?我喜欢这个。我对双轴问题的理解是,它们是否在不同的尺度上。我的想法是,在这种情况下,这将是好的,因为他们在相同的规模,但我喜欢这个采取它。谢谢你说得对。我没在想。在这种情况下,在同一比例上绘制两个变量是很好的
matplot
可以在基本R图形中实现,使用
ggplot
进行整形是首选方法。
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)
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)