在R中的同一图中绘制两幅图

我想在同一个图中绘制y1和y2。

x  <- seq(-2, 2, 0.05)
y1 <- pnorm(x)
y2 <- pnorm(x, 1, 1)
plot(x, y1, type = "l", col = "red")
plot(x, y2, type = "l", col = "green")

但是当我这样做的时候,他们不会一起被绘制在同一个地块里。

在Matlab中,可以hold on ,但有谁知道如何在R中做到这一点?


lines()points()将添加到现有图形中,但不会创建新窗口。 所以你需要这样做

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

您也可以在同一个图形上使用par和plot,但使用不同的坐标轴。 如下所示:

plot( x, y1, type="l", col="red" )
par(new=TRUE)
plot( x, y2, type="l", col="green" )

如果你详细阅读R par ,你将能够生成真正有趣的图表。 另一本书是Paul Murrel的R Graphics。


在构建多层图时,应考虑ggplot包。 这个想法是创建一个基本美学的图形对象,并逐步增强它。

ggplot风格要求数据打包在data.frame

# Data generation
x  <- seq(-2, 2, 0.05)
y1 <- pnorm(x)
y2 <- pnorm(x,1,1)
df <- data.frame(x,y1,y2)

基本方案:

require(ggplot2)

ggplot(df, aes(x)) +                    # basic graphical object
  geom_line(aes(y=y1), colour="red") +  # first layer
  geom_line(aes(y=y2), colour="green")  # second layer

这里使用+ operator来为基本对象添加额外的图层。

使用ggplot您可以访问每个绘图阶段的图形对象。 比方说,通常的分步设置可能如下所示:

g <- ggplot(df, aes(x))
g <- g + geom_line(aes(y=y1), colour="red")
g <- g + geom_line(aes(y=y2), colour="green")
g

g产生的情节,你可以在每个阶段看到它(好吧,创建至少一个图层后)。 剧情的进一步魅力也是通过创造的物体进行的。 例如,我们可以为轴添加标签:

g <- g + ylab("Y") + xlab("X")
g

最终的g看起来像:

在这里输入图像描述

更新(2013-11-08):

正如评论中指出的那样, ggplot的哲学建议以长格式使用数据。 您可以参考此答案https://stackoverflow.com/a/19039094/1796914以查看相应的代码。

链接地址: http://www.djcxy.com/p/5213.html

上一篇: Plot two graphs in same plot in R

下一篇: std::list<std::future> destructor does not block