【问题标题】:Overlaying scatterplots with varying amount of data用不同数量的数据覆盖散点图
【发布时间】:2013-07-26 13:37:36
【问题描述】:

我试图在同一个图上绘制三个不同的数据集。第一组有 32 个数据点,第二组有 38 个,第三组有 48 个。

我无法在 data.frame 中将它们绑定在一起以便将它们传递给 matplot,我不知道该怎么做。

有什么想法/方法可以做到这一点(这可能是我以前从未见过的简单事情)?

它们都是完全独立的,我没有理由不能覆盖它们。

【问题讨论】:

  • 你试过points吗?例如plot(1:10); points(1:5, rep(2, 5), col=2); points(1:5, rep(4, 5), col=3)
  • @sgibb 这将添加一些点,但我不确定我应该如何定义绘图窗口以包含我将添加的所有点而不向绘图添加任何额外的点
  • 使用xlim和ylim定义窗口大小:plot(1:10, xlim=c(0,20), ylim=c(0,15))
  • 是的,但我不想在情节上出现像 1:10 这样的点。我想我可以找到我所有点的限制,并在最大范围内绘制一个数据集。

标签: r plot


【解决方案1】:

例如

d1 <- data.frame(x=runif(20),y=runif(20))
d2 <- data.frame(x=rnorm(10),y=rnorm(10))
d3 <- data.frame(x=rpois(5,5),y=rpois(5,5))
allD <- rbind(d1,d2,d3)
plot(y~x,data=d1,xlim=range(allD$x),ylim=range(allD$y))
with(d2,points(x,y,col=2))
with(d3,points(x,y,col=4))

或:

plot(y~x,data=d1,xlim=range(allD$x),ylim=range(allD$y),type="n")
mapply(function(x,c) with(x,points(x,y,col=c)),
       list(d1,d2,d3),c(1,2,4))

或:

allD$group <- rep(1:3,c(20,10,5))
plot(y~x,data=allD,col=allD$group)

或:

library(lattice)
xyplot(y~x,groups=group,data=allD)

或:

library(ggplot2)
ggplot(allD,aes(x,y,colour=factor(group)))+geom_point()

【讨论】:

  • 这忽略了问题的原始问题...我有不同数量的点的数据集。您的所有三个数据集都有 10 个点
  • 是的,但无论如何这个食谱应该都能正常工作。我会相应地修改。
猜你喜欢
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 2017-12-18
  • 2019-07-02
  • 2021-10-27
  • 2018-09-30
  • 2019-07-21
  • 2018-03-03
相关资源
最近更新 更多