R中有多个图

时间:2013-06-25 04:11:44

标签: r

我想在1帧中绘制2张图。基本上我想比较结果。

无论如何,我尝试的代码是:

    plot(male,pch=16,col="red")
    lines(male,pch=16,col="red")
    par(new=TRUE)
    plot(female,pch=16,col="green")
    lines(female,pch=16,col="green")

当我运行它时,我在一帧中得到2个图但是它改变了我的y轴。添加了下面的情节。无论如何,y轴值是-4,-4,-3,-3,... 这就像两个图都显示了自己的轴。 enter image description here

请帮忙。

由于

2 个答案:

答案 0 :(得分:4)

您不需要第二个plot。只需使用

> plot(male,pch=16,col="red")
> lines(male, pch=16, col = "red")
> lines(female, pch=16, col = "green")
> points(female, pch=16, col = "green")

注意:这将根据第一个数据集设置帧边界,因此第二个图中的某些数据可能超出了图的边界。您可以通过例如修复它自己设定第一个图的限制。

答案 1 :(得分:1)

对于这种情节,我通常更喜欢用ggplot2绘图。主要原因是:它很好地概括了两行以上没有很多代码。

您的示例数据的缺点是它不能作为data.frame使用,这是ggplot2所必需的。此外,在每种情况下,您都需要一个x变量来绘制。因此,首先让我们从您的数据中创建一个data.frame。

dat <- data.frame(index=rep(1:10, 2), vals=c(male, female), group=rep(c('male', 'female'), each=10))

让我们留下

> dat
   index          vals  group
1      1 -0.4334269341   male
2      2  0.8829902521   male
3      3 -0.6052638138   male
4      4  0.2270191965   male
5      5  3.5123679143   male
6      6  0.0615821014   male
7      7  3.6280155376   male
8      8  2.3508890457   male
9      9  2.9824432680   male
10    10  1.1938052833   male
11     1  1.3151289227 female
12     2  1.9956491556 female
13     3  0.8229389822 female
14     4  1.2062726250 female
15     5  0.6633392820 female
16     6  1.1331669670 female
17     7 -0.9002109636 female
18     8  3.2137052284 female
19     9  0.3113656610 female
20    10  1.4664434215 female

请注意,我的命令假定您每个都有10个数据值。该命令必须根据您的实际数据进行调整。

现在我们可以使用ggplot2的强大功能:

library(ggplot2)
ggplot(dat, aes(x=index, y=vals, color=group)) + geom_point() + geom_line()

上面的调用有三个元素:ggplot初始化绘图,告诉R使用dat作为数据源并定义绘图美学,或更好:哪个美学属性图表(如颜色,位置,大小等)受数据影响。我们按预期使用xy - 值,并进一步将color美学设置为分组变量 - 这使得ggplot会自动绘制两个具有不同颜色的组。最后,我们添加了两个几何,几乎完成了上面所写的操作:绘制线条和绘制点。

结果:

Plot of your data using ggplot

如果您在R中以标准方式保存数据(在data.frame中),则以一行代码结束。如果经过几千年的进化,你想要添加另一个性别,它仍然是一行代码。