繁体   English   中英

在image.plot,库(字段)中为图例添加标题

[英]Adding title to legend in image.plot, library(fields)

我一直在使用在R帮助列表服务器上找到的image.plot(字段包)的修改版来绘制图例。 https://stat.ethz.ch/pipermail/r-help/2008-June/164700.html

    library(fields)
    imp <- `body<-`(image.plot,value=`[[<-`(body(image.plot),28,
    quote({par(big.par)
       par(plt = big.par$plt, xpd = TRUE)
       par(mfg = mfg.save, new = FALSE)
       invisible()})))

以下是示例数据集

    m <- matrix(1:15,ncol=3)
    par(mar=c(5,5,5,3))

    imp(m,axes=FALSE)
    box()
    axis(1,axTicks(1),lab=letters[1:length(axTicks(1))])

但是,我想在图例中添加标题(最好垂直对齐)以指定单位。 我不知道可以在主体(image.plot)中的哪个位置进行修改,或者在调用imp时如何指定此内容。 当我尝试创建一个较大的布局以放置image.plot时,收到错误消息,该数字对于布局边距而言太大。

任何帮助,将不胜感激。

此后,我修改了代码,以便可以使用单独的命令绘制(3,2)面板,以便仅沿着底部水平绘制图例。 但是,我想有两个图例,在图的每一列下都有一个图例,但图例仅在右下方。 我知道我要在绘制(3,2)面板之前在设置的空白区域中绘制图例。

    par( oma=c(8,2,1,1))
    set.panel(3,2)

但是我想知道如何在我为传奇人物创造的空间中移动。 指定面似乎无效,也无法更改oma值。

    par( oma=c(2,0,2,0))

    image.plot(x,y,z, legend.only=TRUE, horizontal=TRUE, legend.mar=5,
    legend.shrink = 0.8)
    mtext(line=1, side=1, "cms", outer=F)

看起来fields使用基本图形。 因此,您可以在使用mtext绘制初始图后的任何位置添加文本。 我通过执行?fields这个问题,在其中找到了具有很好示例的help( fields.hints)

我走到马口上,听到制造商的Image.Plot的回音。 很简单的回应! 下面提供了生成数据的3 x 2图,在两列的每一列下方都有一个图例。

    library( fields)
    # Generating the data
    x<- 1: 10
    y<- 1:15
    obj1<-list( x=x,y=y, z= outer(x,y,"+"))
    zlim1<- range( obj1$z)
    obj2<-list( x=x,y=y, z= outer(x^2,y,"+")*100)
    zlim2<- range( obj2$z)

    set.panel( 3,2)
    par(oma=c(8,2,1,1)) #ADDS EXTRA SPACE AT BOTTOM OF FIGURE TO PUT LEGENDS 
    par( mar=c(4,4,1,1))
    ctab<- tim.colors(25)

    image( obj1, zlim=zlim1, col=ctab)
    image( obj2, zlim=zlim2, col=ctab)
    image( obj1, zlim=zlim1, col=ctab)
    image( obj2, zlim=zlim2, col=ctab)  
    image( obj1, zlim=zlim1, col=ctab)
    image( obj2, zlim=zlim2, col=ctab)

    par(oma=c(4,1,2,0))

    # move back to the 5 th plot ( position = 3,1) 
    # First Legend under column 1
    par( mfg=c(3,1)) 
    image.plot( legend.only=TRUE, horizontal = TRUE, col=ctab, zlim =zlim1) 

    # Second legend under Column 2
    par( mfg=c(3,2)) 
    image.plot( legend.only=TRUE, horizontal =TRUE, col=ctab, zlim =zlim2)

布拉莫

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM