【发布时间】:2011-11-04 08:30:39
【问题描述】:
我正在使用来自vcd 包的goodfit 来生成拟合优度图。
我想添加一个图例,说明条形是实际计数,而点(由线连接)是合适的,例如泊松和机器学习。
legend 不起作用。我怎样才能轻松地为这个情节添加一个图例?
谢谢!
【问题讨论】:
我正在使用来自vcd 包的goodfit 来生成拟合优度图。
我想添加一个图例,说明条形是实际计数,而点(由线连接)是合适的,例如泊松和机器学习。
legend 不起作用。我怎样才能轻松地为这个情节添加一个图例?
谢谢!
【问题讨论】:
goodfit 对象的绘图函数使用grid 图形系统(请参阅?rootogram 和getAnywhere(rootogram.default))。
你有两个选择:
grid.legend 函数(来自包grid)。gridBase 包在网格图中嵌入基本图形图例。这是第一个选项的简单示例:
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()
【讨论】:
修改@rcs 的答案以使用grid_legend(与goodfit 一起在vcd 包中),它是为用户设计的(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"))
【讨论】:
如果没有具体的例子就很难说(AFAIK 这不是goodfit 的限制),但我会用legend 检查一些事情:
x 放置带有"topright"、"bottomleft" 等的图例。par("usr") 查询 x 和 y 轴范围。如果绘图是对数刻度,并且您想将图例放置在 y 的最大值处,则必须使用 10^par("usr")[4],依此类推。xpd=NA 以查看是否将图例放置在绘图区域之外,并查看是否需要设置xjust 或yjust。 【讨论】:
goodfit 使用@rcs 的答案中解释的网格图形...