在同一散点图上绘制不同的数据集

时间:2015-11-09 06:59:23

标签: r

我有两个数据集。我想在同一个散点图上绘制两个数据集。我怎么能用R轻松做到这一点?感谢您的建议。

  x1    y1   x2     y2
42.39   2.1 53.05   8.4
38.77   2.1 43.81   2.6
44.43   2.6 42.67   2.4
42.37   2   41.74   3.4
48.79   3.6 42.99   2.9
46.00   2   
53.71   2.7 
47.38   1.8 
43.75   3.1 
46.95   3.9 

2 个答案:

答案 0 :(得分:2)

我们更改x2中列df2的名称,以匹配x1中相应列df1的名称。然后,我们使用df创建一个唯一的数据框rbind。我们使用melt包中的reshape2将数据转换为长格式并保留原始数据框的标识符:df$variable。最后,我们使用ggplot2和颜色绘制散点图,以区分两个数据框。

library(reshape2)
library(ggplot2)
names(df2) <- c("x1", "y2")
df <- rbind(melt(df1, id.vars = "x1"), melt(df2, id.vars = "x1"))
ggplot(df, aes(x1, y = value, colour = variable)) + 
  geom_point() + labs(x = "x", y = "y") +
  scale_colour_manual(values = c("red", "blue"), labels = c("df1", "df2"))

enter image description here

数据

df1 <- structure(list(x1 = c(42.39, 38.77, 44.43, 42.37, 48.79, 46, 
53.71, 47.38, 43.75, 46.95), y1 = c(2.1, 2.1, 2.6, 2, 3.6, 2, 
2.7, 1.8, 3.1, 3.9)), .Names = c("x1", "y1"), class = "data.frame", row.names = c(NA, 
-10L))
df2 <- structure(list(x2 = c(53.05, 43.81, 42.67, 41.74, 42.99), y2 = c(8.4, 
2.6, 2.4, 3.4, 2.9)), .Names = c("x2", "y2"), class = "data.frame", row.names = c(NA, 
-5L))

答案 1 :(得分:1)

简单的例子

set.seed(100)
    df <- data.frame(x1 = rnorm(10, 10, 20), y1 = rnorm(10, 10, 2), x2 = rnorm(10, 10, 4), y2= rnorm(10, 10, 4))

    plot(df$x1, df$y1)
    points(df$x2, df$y2, pch = 16)