两个不同数据帧的散点图r

时间:2013-11-11 15:39:25

标签: r ggplot2

我对R很新并且搜索了很多但是找不到这个问题的答案。

我有两个格式完全相同的数据框,其中行等于country和columns等于years。我想创建一个散点图,其中数据帧1是X,数据帧2是Y。

例如:

 Data frame 1:

        1991  1992
 USA       1     3
 Canada    4     5


 Data frame 2:

        1991  1992
 USA     200   129
 Canada  245   342

有关我应该如何做的任何建议吗?

2 个答案:

答案 0 :(得分:2)

如果我猜对了,这可能就是你要找的。只需添加一个geom_point()图层来绘制第二个数据帧的数据:

#Create dataframe A
a.country <- rep(c("USA", "Canada"), 2)
a.value   <- as.numeric(c(1, 4, 3, 5))
a.year    <- c("1991", "1991", "1992", "1992")
dtframe.a <- data.frame(a.country, a.year, a.value)

#Create dataframe B
b.country <- rep(c("USA", "Canada"), 2)
b.value   <- c(200, 245, 129, 342)
b.year    <- c("1991", "1991", "1992", "1992")
dtframe.b <- data.frame(b.country, b.year, b.value)

# Use ggplot2 to plot data from 2 dataframes
require(ggplot2)

ggplot() +
  geom_point(data=dtframe.a, aes(a.year, a.value, color= a.country)) +
  geom_point(data=dtframe.b, aes(b.year, b.value, color= b.country))

答案 1 :(得分:1)

我知道的大多数散点图命令在同一数据帧中使用不同的列。我建议将两个数据帧合并为一个。目前尚不清楚你是想要将1991和1992的值一起绘制还是分开绘制,所以我遵循DanielRP并假设你将它们一起绘制(但是在散点图中)。你可以在绘图中将年份作为一个条件来分别绘制它们。这是一个有希望让你开始的例子:

#Create dataframe 1
country <- rep(c("USA", "Canada"), 2)
x.value   <- as.numeric(c(1, 4, 3, 5))
year    <- c("1991", "1991", "1992", "1992")
df.1 <- data.frame(country, year, x.value)

#Create dataframe 2
country <- rep(c("USA", "Canada"), 2)
y.value   <- c(200, 245, 129, 342)
year    <- c("1991", "1991", "1992", "1992")
df.2 <- data.frame(country, year, y.value)

#Merge the two dataframes based on 'country' (since this is identical in both)
new.df<-merge(df.1,df.2)

#Make your scatterplot
plot(new.df$x.value,new.df$y.value,xlab="X value",ylab="Y value")

这是一个非常简单的情节,所以根据您的需要,您可能更喜欢使用ggplot2或其他包。