首页 文章

如何在格子图中按因子绘制两条线?

提问于
浏览
3

限定:

df <- data.frame(
        line1 = rep(seq(1,5,by=1),2), 
        line2 = rep(seq(2,6,by=1),2),
        index = rep(seq(1,5,by=1),2),
        factor=rep(c("a","b"),each=5))

其中 line1line2 是两个变量,比如身高和体重 .

这是我想要的每个面板的简单样式(我还想更改点标记的大小,但不使用如何):

plot(df$line1[df$factor=="a"], type = "o", ylim=c(0,6))
lines(df$line2[df$factor=="a"], type = "o", lty=2, pch=0)

当我尝试这个:

library(lattice)
xyplot(c(line1,line2)~index|factor,data=df,type="o")

该程序将所有点视为属于一行 .

此外,我不知道如何提供绘图样式的参数来获得所需的结果 .

PS1 . 令人惊讶的是,我已经用Google搜索并发现了许多散点图(线性拟合,密度等)和格子图的直方图示例,但这不是我想要做的简单事情之一 .

PS2 . 我想标记这个问题 trellis 但是没有声誉点来创建标记 . 有志愿者吗?

2 回答

  • 2

    答案其实很简单 . 而不是将line1和line2组合到一个向量,只需使用xyplot的扩展公式接口:

    xyplot(line1+line2~index|factor,data=df,type="o")
    

    给出:

    enter image description here

    检查 ?xyplot 阅读大量文本并在那里播放一些例子 . 你会发现如何使用 Headers ,图例等来自定义它 .

    当你标记为 ggplot2 时,这是使用该包完成它的一种可能性:

    require(ggplot2)
    require(reshape)
    df2 <- melt(df,id=c("index","factor"))
    
    qplot(index,value,variable,facets = .~factor ,
              data=df2,geom="line",colour=variable)
    

    给:

    enter image description here

  • 7

    或者,您可以融化数据并使用 group

    library(reshape)
    df2 <- melt(df,id.var=3:4)
    xyplot(value~index|factor,data=df2,type="o",group=variable)
    

相关问题