使用ggplot2绘制R中数据的逐年相关性散点图
我有一些每年的足球数据,我想测试一下,看看某些球队指标在下一年是否可以重复。我的数据位于data.frame中,看起来像这样:使用ggplot2绘制R中数据的逐年相关性散点图,r,plot,ggplot2,R,Plot,Ggplot2,我有一些每年的足球数据,我想测试一下,看看某些球队指标在下一年是否可以重复。我的数据位于data.frame中,看起来像这样: y2003 y2004 y2005 Team 1 51.95455 51.00000 53.59091 Team 2 54.18182 56.31818 49.09091 Team 3 48.68182 46.86364 49.22727 T
y2003 y2004 y2005
Team 1 51.95455 51.00000 53.59091
Team 2 54.18182 56.31818 49.09091
Team 3 48.68182 46.86364 49.22727
Team 4 50.86364 47.68182 48.72727
我想做的是在x轴上用“n年”和y轴上的“n+1年”散点绘制这个。比如说2003年对2004年,2004年对2005年,2005年对2006年等等,都在同一块地上
然后我想画一条最佳拟合线,看看这种相关性有多强,是否可以重复
使用ggplot2在R中执行此操作的最佳方法是什么?我可以通过以下方式获得初始绘图:
p=ggplot(df,aes(y2003,y2004))
p + geom_point()
那么,我是否需要手动添加它们?这类东西有内置的功能吗?如果我一个接一个地添加它们,我将如何获得最佳拟合?您需要使数据ggplot“友好”,然后很容易:
df <- read.table(text=" y2003 y2004 y2005
Team1 51.95455 51 53.59091
Team2 54.18182 56.31818 49.09091
Team3 48.68182 46.86364 49.22727
Team4 50.86364 47.68182 48.72727
")
#make data ggplot friendly
mycomb <- combn(colnames(df),2)
plotDat <- do.call(rbind,
lapply(1:ncol(mycomb),function(i){
res <- df[,mycomb[,i]]
colnames(res) <- c("x","y")
res$Group <- paste(mycomb[,i],collapse="-")
res
}))
#plot
library(ggplot2)
ggplot(plotDat,aes(x,y,col=Group)) +
geom_point()
df您需要一个数据框,其中包含每个团队年度组合的一行,其中包含当年和明年的数据以及团队名称。实际上,您可以使用基本R函数在不进行任何拆分-应用-组合操作的情况下获得此结果:
(to.plot <- data.frame(yearN=unlist(df[-ncol(df)]),
yearNp1=unlist(df[-1]),
team=rep(row.names(df), ncol(df)-1)))
# yearN yearNp1 team
# y20031 51.95455 51.00000 Team1
# y20032 54.18182 56.31818 Team2
# y20033 48.68182 46.86364 Team3
# y20034 50.86364 47.68182 Team4
# y20041 51.00000 53.59091 Team1
# y20042 56.31818 49.09091 Team2
# y20043 46.86364 49.22727 Team3
# y20044 47.68182 48.72727 Team4
现在,ggplot
可以像往常一样用于打印:
library(ggplot2)
ggplot(to.plot, aes(x=yearN, y=yearNp1, col=team)) + geom_point() +
geom_abline(intercept=coefs[1], slope=coefs[2])
library(ggplot2)
ggplot(to.plot, aes(x=yearN, y=yearNp1, col=team)) + geom_point() +
geom_abline(intercept=coefs[1], slope=coefs[2])