我想把y和y画在同一个图上。
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中是可以的,但有人知道在R中怎么做吗?
我想把y和y画在同一个图上。
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中是可以的,但有人知道在R中怎么做吗?
当前回答
您还可以在同一图形但不同的轴上使用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》。
其他回答
如果你想把图分成两列(2个相邻的图),你可以这样做:
par(mfrow=c(1,2))
plot(x)
plot(y)
参考链接
使用matplot函数:
matplot(x, cbind(y1,y2),type="l",col=c("red","green"),lty=c(1,1))
如果y和y在相同的x点上求值,就用这个。它缩放y轴以适应哪个更大(y1或y2),不像这里的一些其他答案,如果y2大于y1,就会剪辑y2 (ggplot解决方案大多数都可以接受这一点)。
或者,如果两条线没有相同的x坐标,在第一个图上设置轴限制,并添加:
x1 <- seq(-2, 2, 0.05)
x2 <- seq(-3, 3, 0.05)
y1 <- pnorm(x1)
y2 <- pnorm(x2,1,1)
plot(x1,y1,ylim=range(c(y1,y2)),xlim=range(c(x1,x2)), type="l",col="red")
lines(x2,y2,col="green")
我很惊讶这个Q已经4岁了,没有人提到matplot或x/ylim…
与其将要绘制的值保存在数组中,不如将它们存储在矩阵中。默认情况下,整个矩阵将被视为一个数据集。然而,如果你在图中添加相同数量的修饰符,例如col(),就像你在矩阵中有行一样,R会发现每一行都应该被独立对待。例如:
x = matrix( c(21,50,80,41), nrow=2 )
y = matrix( c(1,2,1,2), nrow=2 )
plot(x, y, col("red","blue")
这应该可以工作,除非您的数据集大小不同。
你也可以使用ggvis创建你的绘图:
library(ggvis)
x <- seq(-2, 2, 0.05)
y1 <- pnorm(x)
y2 <- pnorm(x,1,1)
df <- data.frame(x, y1, y2)
df %>%
ggvis(~x, ~y1, stroke := 'red') %>%
layer_paths() %>%
layer_paths(data = df, x = ~x, y = ~y2, stroke := 'blue')
这将创建以下情节:
Lines()或points()将添加到现有的图形中,但不会创建新的窗口。所以你需要这么做
plot(x,y1,type="l",col="red")
lines(x,y2,col="green")