激励示例 - 我需要为符号填充和未填充的圆圈做一个森林图。
forestplot(labeltext = labelstrings,
fn.ci_norm = c(fpDrawCircleCI, fpDrawPointCI),
mean=cbind(df.both$mauc, df.both$mcmax),
lower=cbind(df.both$lauc, df.both$lcmax),
upper=cbind(df.both$uauc, df.both$ucmax),
xlog=TRUE,
boxsize=0.4,
pch=1,
xticks = c(0.33,0.5,0.8,1,1.25,2,3),
col=fpColors(box=c("black","black"),line=c("black","black")),
txt_gp = fpTxtGp(xlab=gpar(cex=1),ticks=gpar(cex=0.8)))`
但符号的大小略有不同(fpdrawpointci比fpdrawcircleci小)。如果我尝试FPDrawPointCi,我将无法接受PCH值的向量。
我尝试了
fn.ci_norm = c(fpDrawPointCI(pch=1), fpDrawPointCI(pch=19)
但这无效。
因此,我尝试在加载库(forestplot)之后,但在我的forestplot命令之前尝试创建这个。
。fpDrawPointCIfilled <- function (lower_limit, estimate, upper_limit, size,
y.offset = 0.5, clr.line, clr.marker, lwd, lty = 1, vertices,
vertices.height = 0.1, pch = 16, ...)
{
prFpDrawLine(lower_limit = lower_limit, upper_limit = upper_limit,
clr.line = clr.line, lwd = lwd, lty = lty, y.offset = y.offset,
vertices = vertices, vertices.height = vertices.height)
box <- convertX(unit(estimate, "native"), "npc", valueOnly = TRUE)
if (box >= 0 && box <= 1) {
if (!is.unit(size)) {
size <- unit(size, "snpc")
}
grid.points(x = unit(estimate, "native"), y = unit(y.offset,
"npc"), size = size, pch = pch, gp = gpar(fill = clr.marker,
col = clr.marker))
}}
它返回一个错误,说FPDrawPointCifild()中的错误:找不到函数PRFPDRAWLINE。任何人都可以发布一个示例,说明他们如何修改了FPDRAWNORMALCI在森林图中的功能?
谢谢克里斯
尝试使用您的初始干净代码并添加以下内容:
meta.ci.pch = 21
(或任何其他代码)为点样式设置大小和形状。您可以使用?points
查看绘制字符的所有样式。您可以在串联列表中设置整个样式的列表,该列表与图的数量一样长。只是串联:
meta.ci.pch = c(19, 3, 9)
您最终会为每个符号提供不同的符号。
我认为您可以通过以下方式改变圆的大小:
circles.cex = 1.1 or circles.cex = .8
或任何其他数字,指示默认大小的110%或默认大小的80%。但是第一个应该允许您使用空心和填充的形状。
故障排除您遇到的特定问题是prfpdrawline函数未从forestplot库导出;这是一个内部功能。标准警告是,未将来的库中未来的警告可能会改变功能。就是说...
如果将prFpDrawLine
替换为forestplot:::prFpDrawLine
,则三重冒号将查看库中可能会或可能不会导出的对象。在这种情况下,它将找到非出口函数prFpDrawLine
,并且您的代码应起作用。
比尔