绘制多条曲线相同的图形和相同的比例

Ren*_*nan 20 plot r

这是这个问题的后续行动.

我想在同一个图上绘制多条曲线,但是我的新曲线与第一条曲线生成的y轴刻度相同.

请注意以下示例:

y1 <- c(100, 200, 300, 400, 500)
y2 <- c(1, 2, 3, 4, 5)
x <- c(1, 2, 3, 4, 5)

# first plot
plot(x, y1)

# second plot
par(new = TRUE)
plot(x, y2, axes = FALSE, xlab = "", ylab = "")
Run Code Online (Sandbox Code Playgroud)

这实际上是在图表的相同坐标上绘制两组值(因为我隐藏了将使用第二个图创建的新y轴).

那么我的问题是如何在绘制第二个图时保持相同的y轴刻度.

42-*_*42- 35

(典型的方法是只使用plot一次来设置限制,可能包括所有系列组合的范围,然后使用pointslines添加单独的系列.)要plot多次使用,par(new=TRUE) 你需要确保你的第一个情节有一个适当ylim的接受所有系列(在另一种情况下,你可能还需要对xlim使用相同的策略):

# first plot
plot(x, y1, ylim=range(c(y1,y2)))

# second plot  EDIT: needs to have same ylim
par(new = TRUE)
plot(x, y2, ylim=range(c(y1,y2)), axes = FALSE, xlab = "", ylab = "")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

下一个代码将更紧凑地执行任务,默认情况下,您将数字作为点,但第二个代码为您提供典型的R类型"点":

  matplot(x, cbind(y1,y2))
  matplot(x, cbind(y1,y2), pch=1)
Run Code Online (Sandbox Code Playgroud)


cbe*_*ica 6

points或者lines如果

  • y2 稍后生成,或
  • 新数据不一样x但仍应进入相同的坐标系.

正如你y的共享一样x,你也可以使用matplot:

matplot (x, cbind (y1, y2), pch = 19)
Run Code Online (Sandbox Code Playgroud)

matplot(x,cbind(y1,y2),pch = 19)

(没有pch matplopt将绘制y矩阵的列号而不是点).


jor*_*ran 5

你不是很清楚你想要什么,因为我认为@DWin在技术上是正确的,给出了你的示例代码.我觉得你真正想要的是这个:

y1 <- c(100, 200, 300, 400, 500)
y2 <- c(1, 2, 3, 4, 5)
x <- c(1, 2, 3, 4, 5)

# first plot
plot(x, y1,ylim = range(c(y1,y2)))

# Add points
points(x, y2)
Run Code Online (Sandbox Code Playgroud)

DWin的解决方案是在隐含的假设(基于您的示例代码)下运行,您希望绘制覆盖在原始比例上的第二组点.这就是为什么他的图像看起来像是在1,101等处绘制的.为什么plot第二次调用不是你想要的,你想要使用添加到图中points.所以我机器上面的代码产生了这个:

在此输入图像描述

但是DWin关于使用的主要观点ylim是正确的.