在R中的单个图中组合2个数据集

时间:2012-11-07 15:52:11

标签: r plot

我有两列数据,f.deltag.delta,我想在R中生成一个散点图。

以下是我的表现。

plot(f.delta~x, pch=20, col="blue")
points(g.delta~x, pch=20, col="red")

问题在于:f.delta的值从0到-7不等; g.delta的值从0到10不等。

绘制绘图时,y轴从1延伸到-7。因此,虽然所有f.delta点都可见,但是y> 1的任何g.delta点都会从视图中被截断。

如何阻止R自动从数据值设置ylims。已尝试过yaxtyaxpylims的各种组合,但未成功。

任何建议都将不胜感激。

谢谢, 安扬

2 个答案:

答案 0 :(得分:2)

您需要告诉R数据的限制是什么,并将其作为参数ylim传递给plot()(注意参数为ylim而不是ylims!)。这是一个例子:

set.seed(1)
df <- data.frame(f.delta = runif(10, min = -7, max = 0),
                 g.delta = runif(10, min = 0, max = 10),
                 x = rnorm(10))

ylim <- with(df, range(f.delta, g.delta)) ## compute y axis limits

plot(f.delta ~ x, data = df, pch = 20, col = "blue", ylim = ylim)
points(g.delta ~ x, data = df, pch = 20, col = "red")

哪个产生

enter image description here

答案 1 :(得分:2)

除了Gavin的优秀答案之外,我还认为我会提到在这些情况下另一个常见的习惯是创建一个具有正确限制的空图,然后使用points填充它,{{1等等。

使用Gavin的示例数据:

lines

with(df,plot(range(x),range(f.delta,g.delta),type = "n")) points(f.delta~x, data = df, pch=20, col="blue") points(g.delta~x, data = df, pch=20, col="red") 导致type = "n"根据我们提供的x和y值的范围仅创建空的绘图窗口。然后我们在这个现有图上的两列使用plot