【问题标题】:Need help constructing doubleYScale key需要帮助构建 doubleYScale 键
【发布时间】:2016-03-30 05:02:41
【问题描述】:

我不知道如何在下面的图中添加正确的键。请帮忙。键应包含文本c("Totalcatch","Effort","Catchrate"),后跟适当颜色的行(用于 Effort 和 Catchrate)和适当的 pch(一个矩形表示 totalcatch,15 和 16 表示其他两个变量。)

library(latticeExtra)
Catchrate<-c(0.05, 0.18, 0.25, 0.31, 0.32, 0.34, 0.35)
totalcatch<-c(20, 30, 20, 30, 40, 50, 60)
Effort<-c(0, 1000, 2000, 3000, 4000, 5000, 6000)
year<-(2009:2015)
p1=barchart(totalcatch~as.factor(year),horizontal=FALSE,ylim=c(0,70),xlim=c(0,7.5),scales=list(y=list(axs="i"),x=list(at=1:7,labels=year)))
p2=xyplot(Effort~as.factor(year),type="b",col=2,scales=list(y=list(axs="i",draw=TRUE)),pch=15,par.settings=simpleTheme(col=2),ylab=list(label="Effort",col=2))
p3=xyplot(Catchrate~as.factor(year),type="b",pch=16,col=1,scales=list(y=list(draw=FALSE,axs="i",limit=c(0,0.4))))+layer(panel.axis(side="left",half=FALSE,tck=1,ticks=TRUE,at=seq(0.05,0.35,by=0.05),label=seq(0.05,0.35,by=0.05),line.col=1,text.col=1))
doubleYScale(doubleYScale(p1,p2,add.ylab2=TRUE,style2=4),p3)+layer(panel.text(0.8,40,label="Catchrate",srt=90))

如果您能在此过程中简化我的代码,那就太好了。

【问题讨论】:

    标签: r lattice


    【解决方案1】:

    这似乎在一定程度上起作用。但如果有人有更简单的解决方案,请发布。

    library(latticeExtra)
    Catchrate<-c(0.05, 0.18, 0.25, 0.31, 0.32, 0.34, 0.35)
    totalcatch<-c(20, 30, 20, 30, 40, 50, 60)
    Effort<-c(0, 1000, 2000, 3000, 4000, 5000, 6000)
    year<-(2009:2015)
    key=list(text=list("Totalcatch",col="#0080ff"),rectangle=list(col="#0080ff"),text=list("Catchrate"),lines=list(col=1,type="b",pch=16),text=list("Effort",col=2),lines=list(col=2,type="b",pch=15),corner=c(0,1))
    p1=barchart(totalcatch~as.factor(year),horizontal=FALSE,ylim=c(0,70),xlim=c(0,7.5),scales=list(y=list(axs="i"),x=list(at=1:7,labels=year)),key=key,col="#0080ff",ylab="Totalcatch")
    p2=xyplot(Effort~as.factor(year),type="b",col=2,scales=list(y=list(axs="i",draw=TRUE)),pch=15,par.settings=simpleTheme(col=2),ylab=list(label="Effort",col=2))
    p3=xyplot(Catchrate~as.factor(year),type="b",pch=16,col=1,scales=list(y=list(draw=FALSE,axs="i",limit=c(0,0.4))))+layer(panel.axis(side="left",half=FALSE,tck=1,ticks=TRUE,at=seq(0.05,0.35,by=0.05),label=seq(0.05,0.35,by=0.05),line.col=1,text.col=1))
    doubleYScale(doubleYScale(p1,p2,add.ylab2=TRUE,style2=4),p3)+layer(panel.text(0.8,40,label="Catchrate",srt=90))
    

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      • 2012-01-29
      • 2012-02-21
      相关资源
      最近更新 更多