【问题标题】:Multiple plot by group by one function一个功能按组多图
【发布时间】:2013-05-24 09:18:41
【问题描述】:

我有以下数据:

Animal  MY  Age
1   17.03672067 1
1   17.00833641 2
1   16.97995215 3
1   16.95156788 4
1   16.92318362 5
1   16.88157748 6
2   16.83997133 2
2   16.79836519 3
2   16.75675905 4
2   16.7151529  5
2   16.67354676 6
2   16.63194062 7
3   16.59033447 1
3   16.54872833 2
3   16.50712219 3
3   16.46551604 4
3   16.4239099  5
3   16.38230376 6
4   16.34069761 1
4   16.29909147 2
4   16.25748533 3
4   16.21587918 4
4   16.17427304 5
4   16.1326669  6

我想在每只动物的 MY vs Age 之间绘制散点图。我用这个功能

  plot(memo$MY[memo$Animal=="1223100747"]~memo$Age[memo$Animal=="1223100747"]).

如果我现在想为其他动物添加相同的情节(MY vs Age),我只需要使用函数:lines。 但是,由于我有大约 200 只动物,我不想手动执行 100 次。我的问题是:如何通过一个函数绘制这些不同的动物?,而不是使用lineslines ....lines)

问候, 芳

【问题讨论】:

    标签: r plot scatter-plot


    【解决方案1】:

    您可以使用by 例如:

    by(memo,memo$Animal,FUN=function(x) plot(x$MY~x$Age))
    

    【讨论】:

    • 嗨 agstudy:我的数据包含缺失值。我如何使用您的建议指定这一点?另一个问题是:是否可以通过其他因素(例如阶段)对动物进行分类,即每只动物都有阶段 1、2、3。所以我想在第 1 阶段、第 2 阶段、第 3 阶段绘制动物?谢谢!
    【解决方案2】:

    如果你想使用基础 R,你可以使用循环或 matplot,但我建议你使用包 ggplot2。

    DF <- read.table(text="Animal  MY  Age
    1   17.03672067 1
    1   17.00833641 2
    1   16.97995215 3
    1   16.95156788 4
    1   16.92318362 5
    1   16.88157748 6
    2   16.83997133 2
    2   16.79836519 3
    2   16.75675905 4
    2   16.7151529  5
    2   16.67354676 6
    2   16.63194062 7
    3   16.59033447 1
    3   16.54872833 2
    3   16.50712219 3
    3   16.46551604 4
    3   16.4239099  5
    3   16.38230376 6
    4   16.34069761 1
    4   16.29909147 2
    4   16.25748533 3
    4   16.21587918 4
    4   16.17427304 5
    4   16.1326669  6",header=TRUE)
    
    library(ggplot2)
    DF$Animal <- factor(DF$Animal)
    
    p1 <- ggplot(DF,aes(x=MY,y=Age,colour=Animal)) + geom_line()
    print(p1)
    

    【讨论】:

    • 嗨 Roland,我用 ggplot2 尝试了你的建议。它按我的预期完美运行。但是,如果我现在只想选择阶段 1 中的动物进行绘图。这意味着我有另一个因素是“阶段= 1,2,3”来控制。我该如何指定?
    • 好吧,您可以对 data.frame 进行子集化,也可以对绘图进行分面,这可能是您想要做的。谷歌搜索“ggplot2 facet”。
    • 嗨,罗兰。我使用了子集数据。嗯,暂时让我满意。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    相关资源
    最近更新 更多