我想在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,... 这就像两个图都显示了自己的轴。
请帮忙。
由于
答案 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
作为数据源并定义绘图美学,或更好:哪个美学属性图表(如颜色,位置,大小等)受数据影响。我们按预期使用x
和y
- 值,并进一步将color
美学设置为分组变量 - 这使得ggplot会自动绘制两个具有不同颜色的组。最后,我们添加了两个几何,几乎完成了上面所写的操作:绘制线条和绘制点。
结果:
如果您在R中以标准方式保存数据(在data.frame中),则以一行代码结束。如果经过几千年的进化,你想要添加另一个性别,它仍然是一行代码。