如何在Lattice中为轮廓图添加单个新轮廓

时间:2013-08-22 12:30:46

标签: r graphics contour lattice

我使用莱迪思包中的contourplot函数生成了一个填充的等值线图。 我希望能够强调这个函数产生的轮廓线之一,例如通过改变lwd = 2,并且不再强调产生的其他轮廓线,例如,通过将剩余的轮廓线颜色设置为灰色。

例如,我希望相当于添加

contourplot(
Male ~ Year * Age, 
data=this.ds, region=F, labels=F, lwd=2, at=c(0, 0.01, 1))

contourplot(
Male ~ Year * Age, 
data=this.ds, 
region=T, col.regions=rev(heat.colors(200)), 
cuts=50, main="", sep="") 

我认识到答案可能涉及函数更新,面板和/或图层(如果使用latticeExtra),但我对格子对象的基础逻辑/结构的理解还不足以弄清楚要做什么做。

修改

感谢您的帮助。我基本上使用了第一个答案,但通过以下略微修改,可以指出轮廓线上的几个特征:

require(lattice)
require(latticeExtra)

Part1 <- contourplot(Female ~ Year * Age, 
                     data=this.ds,
                     region=T, 
                     col.regions=rev(heat.colors(200)),
                     cuts=50, 
                     main="", 
                     labels=F,
                     col="grey",
                     sep="")

Part2 <- contourplot(Female ~ Year * Age,
                     data=this.ds,
                     region=F,
                     labels=F,
                     lwd=2,
                     at=c(0, 0.01, 1),
                     panel=function(...){
                     panel.contourplot(...)
                      panel.segments(x0=c(1840, 1900, 2000, 1840), 
                                     x1=c(1900, 1900, 2000, 2000), 
                                     y0=c(40.5, 0, 0, 64), 
                                     y1=c(40.5, 40.5, 64, 64), 
                                     lty="dashed")
                     }                    
)


Plot.Final <- Part1+ Part2 

print(Plot.Final)

2 个答案:

答案 0 :(得分:1)

加载latticeExtra库。然后:

Part1<-contourplot(
    Male ~ Year * Age, 
    data=this.ds, 
    region=T, col.regions=rev(heat.colors(200)), 
    cuts=50, main="", sep="")

Part2<-contourplot(
    Male ~ Year * Age, 
    data=this.ds, region=F, labels=F, lwd=2, at=c(0, 0.01, 1))

Plot.Final<-Part1+Part2

这应该按照您的意愿组合图形。如果需要,您可能需要设置xlim,ylim和标签,以便一切正常。

答案 1 :(得分:0)

使用contour代替contourplot

bar<-matrix(runif(100,nrow=10))
contour(bar)
contour(bar,levels = 0.2, lwd=3, add=TRUE)

编辑:事实证明你甚至不需要这样做。与contourplot不同,contour允许您指定线宽(或颜色或其他)的向量,因此contour(bar,lwd=c(2,1,1,1,1,))就足够了。

编辑2:道歉:这是在graphics包中。