【问题标题】:Plotting two Poisson processes on one plot在一张图上绘制两个泊松过程
【发布时间】:2014-12-08 20:21:03
【问题描述】:

我有两个泊松过程:

n <- 100
x <- seq(0, 10, length = 1000)
y1 <-  cumsum(rpois(1000, 1 / n))
y2 <- -cumsum(rpois(1000, 1 / n))

我想将它们绘制在一个图中,并期望 y1 位于 x 轴上方,y2 位于 x 轴下方。我尝试了以下代码:

plot(x, y1)
par(new = TRUE)
plot(x, y2, col = "red",
 axes = FALSE, 
 xlab = '', ylab = '', 
 xlim = c(0, 10), ylim = c(min(y2), max(y1)))

但它不起作用。有人可以告诉我如何解决这个问题吗? (我正在使用 R 编写代码)

在此先感谢

【问题讨论】:

  • 除非您先使用plot 然后lines 或修复ylimits,否则您的两个图将不会有相同的y 限制。

标签: r


【解决方案1】:

怎么样

plot(x,y1, ylim=range(y1,y2), type="l")
lines(x, y2, col="red")

我建议尽量避免多次调用 par(new=TRUE) 进行绘图。这通常非常混乱。在这里,我们使用lines() 添加到现有绘图中。唯一的问题是 x 和 y 限制不会根据新数据而改变,因此我们在第一个 plot() 调用中使用 ylim 来设置适合所有数据的范围。

【讨论】:

  • 通常par(add=TRUE) 的唯一原因是如果使用具有特殊功能的基本图形plot-函数。
  • 是的!这太棒了,它工作得很好,我什至可以在上面添加更多行,例如y2y1 之间的差异行。谢谢@MrFlick !!
【解决方案2】:

或者,如果您不想担心限制(如 MrFlick 提到的)或行数,您也可以使用 meltggplot 来处理您的数据

df <- data.frame(x, y1, y2)
library(reshape2)
library(ggplot2)
mdf <- melt(df, "x")
ggplot(mdf, aes(x, value, color = variable)) +
  geom_line()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 2014-01-12
    • 2012-11-24
    • 2012-01-09
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多