我有两个泊松过程:
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代替我的代码)
非常感谢提前
答案 0 :(得分:6)
怎么样
plot(x,y1, ylim=range(y1,y2), type="l")
lines(x, y2, col="red")
我建议尽量避免使用par(new=TRUE)
进行多次调用。那通常很乱。在这里,我们使用lines()
添加到现有的情节中。唯一的问题是x和y限制不会根据新数据发生变化,因此我们会在第一次ylim
调用中使用plot()
来设置适合所有数据的范围。
答案 1 :(得分:3)
或者,如果您不想担心限制(如提到的MrFlick)或行数,您也可以使用melt
和ggplot
df <- data.frame(x, y1, y2)
library(reshape2)
library(ggplot2)
mdf <- melt(df, "x")
ggplot(mdf, aes(x, value, color = variable)) +
geom_line()