我想把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中怎么做吗?


当前回答

如果您使用的是基础图形(即不是晶格/网格图形),那么您可以通过使用点/线/多边形函数来模拟MATLAB的保持特性,从而在不开始新的图形的情况下为图形添加额外的细节。在多图布局的情况下,您可以使用par(mfg=…)来选择将内容添加到哪个图中。

其他回答

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

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

使用plotly(用主要和次要y轴从plotly中添加溶液-它似乎缺失了):

library(plotly)     
x  <- seq(-2, 2, 0.05)
y1 <- pnorm(x)
y2 <- pnorm(x, 1, 1)

df=cbind.data.frame(x,y1,y2)

  plot_ly(df) %>%
    add_trace(x=~x,y=~y1,name = 'Line 1',type = 'scatter',mode = 'lines+markers',connectgaps = TRUE) %>%
    add_trace(x=~x,y=~y2,name = 'Line 2',type = 'scatter',mode = 'lines+markers',connectgaps = TRUE,yaxis = "y2") %>%
    layout(title = 'Title',
       xaxis = list(title = "X-axis title"),
       yaxis2 = list(side = 'right', overlaying = "y", title = 'secondary y axis', showgrid = FALSE, zeroline = FALSE))

工作演示截图:

也就是说,你可以在overplot中使用点。

plot(x1, y1,col='red')

points(x2,y2,col='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')

这将创建以下情节:

我认为你想要的答案是:

plot(first thing to plot)
plot(second thing to plot,add=TRUE)