如何在R中添加适合情节的图例?

时间:2011-08-26 08:46:46

标签: r plot legend

我正在使用goodfit包中的vcd来制作合身图。

我想添加一个图例,说明条形图是实际的数字,而点(由线条连接)是合适的,例如使用泊松和ML。

legend不起作用。如何在这个情节中轻松添加图例?

谢谢!

3 个答案:

答案 0 :(得分:3)

goodfit个对象的绘图功能正在使用grid图形系统(请参阅?rootogramgetAnywhere(rootogram.default))。

您有两种选择:

  1. 使用相当有限的grid.legend函数(来自包grid)。
  2. 使用gridBase包在网格图中嵌入基本图形图例。
  3. 以下是第一个选项的简单示例:

    library("vcd")
    dummy <- rnbinom(200, size=1.5, prob=0.8)
    gf <- goodfit(dummy, type="nbinomial", method="MinChisq")
    plot(gf)
    pushViewport(viewport(x=unit(0.8, "npc"),
                          y=unit(0.8, "npc"),
                          width=stringWidth("Legend x"),
                          height=unit(6, "line"),
                          name="vp1"))
    grid.legend(labels=c("Legend 1", "Legend 2"), pch=1:2)
    popViewport()
    

答案 1 :(得分:1)

修改@ rcs的答案,使用grid_legend(在vcd包中加上goodfit),用于用户(grid.legend是一个未记录的内部函数),并展示一个专门针对这个情节的传奇。最好在fill=c(NA,"gray")基础图形中使用legend,但在grid_legend中没有实现。

library("vcd")
dummy <- rnbinom(200, size=1.5, prob=0.8)
gf <- goodfit(dummy, type="nbinomial", method="MinChisq")
plot(gf)
grid_legend(x=unit(0.8, "npc"),
            y=unit(0.8, "npc"),
            labels=c("est NBinom (MinChiSq)","obs"),
            title="",
            pch=c(16,15),col=c("red","gray"))

答案 2 :(得分:-1)

没有具体的例子很难说(AFAIK不是goodfit的限制),但我会用legend检查一些事情:

  1. 您可以为参数"topright"放置带有"bottomleft"x等的图例。
  2. 您可以使用par("usr")查询x和y轴限制。如果绘图是对数刻度,并且您希望将图例放在y的最大值,则必须使用10^par("usr")[4],依此类推。
  3. 传递参​​数xpd=NA,看看您是否将图例放在绘图区域之外,看看是否需要设置xjustyjust