0

我想在 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,... 这就像两个图都显示自己的轴一样。在此处输入图像描述

请帮忙。

谢谢

4

2 回答 2

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")

注意:这将根据第一个数据集设置框架边界,因此第二个图中的一些数据可能在图的边界之外。您可以通过例如自己设置第一个绘图的限制来修复它。

于 2013-06-25T04:28:58.183 回答
1

对于这种情节,我通常ggplot2更喜欢这种情节。主要原因:它可以很好地推广到两行以上,而无需大量代码。

您的示例数据的缺点是它不能作为data.frameggplot2 所必需的 . 此外,在每种情况下,您都需要一个 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初始化绘图,告诉 Rdat用作数据源并定义绘图美学,或者更好:绘图的哪些美学属性(例如颜色、位置、大小等)受数据影响。我们按预期使用和 - 值,并将美学设置x为分组变量 - 这使得 ggplot 自动绘制具有不同颜色的两个组。最后,我们添加了两个几何图形,它们几乎完成了上面写的操作:画线和画点。ycolor

结果:

使用 ggplot 绘制数据

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

于 2013-06-25T06:37:08.323 回答