【问题标题】:Set color segments by group按组设置颜色段
【发布时间】:2015-05-15 21:30:03
【问题描述】:

我正在尝试制作一种从底部到值的线的 xyplot。问题是我不知道如何调整线条的颜色。

time <-  rnorm(50, 5, 2)
death.count <- rnorm(50, -0.25, 0.25)
Inoc.size <-rep(c("A", "B"), times=25)
    
data <- data.frame(time, death.count, Inoc.size)   
    
xyplot(death.count ~ time, data,
       groups=Inoc.size, ylim=c(0, -0.5),
       xlab=list("Time - h", cex=1.5),
       ylab=list(expression("Death cells - ln N"[i]), cex=1.5),
       par.settings=list(
           alpha=0.5,
           superpose.symbol=list(pch=c(15, 16, 17, 18), 
               col=c(myColours[3], myColours[6], myColours[4], myColours[7]))),
           auto.key=T,
           panel=panel.superpose,
           panel.groups=function(x, y, col, group.number, groups, ...) {
               xj <- jitter(as.numeric(x), factor=0.5)
               panel.xyplot(xj, y, ...)
               panel.segments(x0=xj, x1=xj, y0=0, y1=y, groups, lwd=2)
           }
)

【问题讨论】:

    标签: r plot graphics lattice


    【解决方案1】:

    我不太明白您的情节如何与您的代码匹配。 但这可能对你有用。在panel.groups 中定义col,并在panel.segments 中引用由group.number 索引的那个。

    library(lattice)
     myColours=1:7
     time<-  rnorm(50,5,2)
         death.count<- rnorm(50,-0.25,0.25)
         Inoc.size<-rep(c("A","B"),times=25)
    
         data<-data.frame( time,death.count, Inoc.size)  
    
     xyplot(death.count~time, data,
           groups=Inoc.size,#ylim=c(0,-0.5),
        xlab = list("Time - h", cex=1.5),
       ylab = list(expression("Death cells - ln N"[i]), cex=1.5),
        par.settings= list(
         alpha = 0.5,superpose.symbol=list(
         pch=c(15,16,17,18),
          col=c(myColours[3],myColours[6],myColours[4],myColours[7])),
             pch=c(15,16,17,18),
         col=c(myColours[3],myColours[6],myColours[4],myColours[7])),
           auto.key=T,
        panel = panel.superpose,
            panel.groups = function(x, y, col,group.number,groups, ...) {
               xj=jitter(as.numeric(x), factor=0.5)
     col=c(myColours[3],myColours[6],myColours[4],myColours[7])
               panel.xyplot(xj,y,...)
               panel.segments(x0=xj,x1=xj, y0=0, y1=y,col=col[group.number],groups,
                                            lwd = 2)
                                  }
                         )
    

    【讨论】:

    • 我不确定这里的抖动对你有什么作用;您的 x(时间)是一个连续变量。抖动对于分散离散值(如因子)很有用,否则会过度绘制。
    【解决方案2】:

    我认为您需要 col=c(myColours[3],myColours[6],myColours[4],myColours[7]) 到 panel.segments。

    panel.segments(x0=xj,x1=xj, y0=0, y1=y,groups,lwd = 2, col=c(myColours[3],myColours[6],myColours[4],myColours[7]))
    

    【讨论】:

    • 我已经尝试过了,它只是生成不同的颜色条,这些颜色条会依次改变颜色而不是根据组改变。
    • 对了,你需要根据group.number索引col
    猜你喜欢
    • 2013-08-30
    • 2013-04-02
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多