我想把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中怎么做吗?
当前回答
tl;dr:你想使用曲线(加上add=TRUE)或直线。
我不同意par(new=TRUE),因为它会重复打印标记和轴标签。如
情节的输出(罪恶);(新= T)相当;绘图(函数(x) x**2)。
看看纵轴标签有多乱!由于范围是不同的,你需要设置ylim=c(两个函数之间的最低点,两个函数之间的最高点),这比我将要展示给你的要简单得多——如果你想添加的不仅仅是两条曲线,而是很多条曲线,那就更不容易了。
关于绘图,总是让我困惑的是曲线和直线之间的区别。(如果你不记得这是两个重要的绘图命令的名称,就唱出来吧。)
这就是曲线和直线的最大区别。
曲线将绘制一个函数,如曲线(sin)。Lines (x=0:10, y=sin(0:10))。
这里有一个微小的区别:对于你正在尝试做的事情,curve需要使用add=TRUE调用,而lines已经假设你正在向现有的图形添加。
这是调用plot(0:2)的结果;曲线(罪)。
幕后,检查方法(情节)。并检查身体(情节。函数)[[5]]。当你调用plot(sin)时,R计算出sin是一个函数(不是y值)并使用plot。函数方法,最终调用曲线。曲线是处理函数的工具。
其他回答
tl;dr:你想使用曲线(加上add=TRUE)或直线。
我不同意par(new=TRUE),因为它会重复打印标记和轴标签。如
情节的输出(罪恶);(新= T)相当;绘图(函数(x) x**2)。
看看纵轴标签有多乱!由于范围是不同的,你需要设置ylim=c(两个函数之间的最低点,两个函数之间的最高点),这比我将要展示给你的要简单得多——如果你想添加的不仅仅是两条曲线,而是很多条曲线,那就更不容易了。
关于绘图,总是让我困惑的是曲线和直线之间的区别。(如果你不记得这是两个重要的绘图命令的名称,就唱出来吧。)
这就是曲线和直线的最大区别。
曲线将绘制一个函数,如曲线(sin)。Lines (x=0:10, y=sin(0:10))。
这里有一个微小的区别:对于你正在尝试做的事情,curve需要使用add=TRUE调用,而lines已经假设你正在向现有的图形添加。
这是调用plot(0:2)的结果;曲线(罪)。
幕后,检查方法(情节)。并检查身体(情节。函数)[[5]]。当你调用plot(sin)时,R计算出sin是一个函数(不是y值)并使用plot。函数方法,最终调用曲线。曲线是处理函数的工具。
如果你想把图分成两列(2个相邻的图),你可以这样做:
par(mfrow=c(1,2))
plot(x)
plot(y)
参考链接
你也可以使用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')
这将创建以下情节:
使用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…
数学函数使用曲线。 并使用add=TRUE来使用相同的绘图和轴。
curve( log2 , to=5 , col="black", ylab="log's(.)")
curve( log , add=TRUE , col="red" )
curve( log10, add=TRUE , col="blue" )
abline( h=0 )