2

你能帮我解决这个问题吗:

我有一个如下数据库:

Animal  Milk    Age
1   11.96703591 1
1   13.41236333 2
1   14.85769075 3
1   16.30301817 4
2   17.74834559 1
2   19.08465881 2
2   20.42097204 3
2   14.66094662 4
2   14.70197368 5
3   14.74300075 1
3   14.78402781 2
3   14.82505488 3
3   14.86608194 4
3   14.90710901 5

我想在牛奶与年龄之间画一个图,所以我使用函数 plot(Milk~Age, data=mydata) 我的问题是如何只使用一个函数为每个人制作相同的图(Milk~Age)。因为我有大约 200 只动物,如果我必须跑 200 次才能产生 200 条曲线。

谢谢芳

4

3 回答 3

2

一种方法是使用库ggplot2,然后为每只动物制作单独的方面。由于您有许多动物,您可以更换ncol=nrow=进入facet_wrap()以获得更好的视野。

library(ggplot2)
ggplot(df,aes(x=Age,y=Milk))+geom_point()+facet_wrap(~Animal)

在此处输入图像描述

于 2013-05-17T14:38:48.133 回答
1

以下代码应创建与您具有唯一Animal值一样多的绘图,并将它们存储在工作目录中的不同 pdf 文件中:

invisible(by(df, df$Animal, function(tmpdf) {
    pdf(paste0("plot",tmpdf$Animal[1],".pdf"))
    plot(Milk~Age, data=tmpdf, main=tmpdf$Animal[1])
    dev.off()
}))
于 2013-05-17T14:39:01.680 回答
0

我会说使用 ggplot2 包中的 ggplot

ggplot(df,aes(x=Age,y=Milk, color=Animal))+geom_point() 

编辑1:实际上这将失去 200 只动物的清晰度。您是希望将所有这些数据点放在一个图表中还是分散在 200 个图表中?如果是后者,那么我同意 Didzis

于 2013-05-17T14:43:13.943 回答