首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >forestplot:我想按照包的建议修改现有的fpDrawNormalCI

forestplot:我想按照包的建议修改现有的fpDrawNormalCI
EN

Stack Overflow用户
提问于 2017-02-16 05:11:34
回答 2查看 472关注 0票数 0

振奋人心的例子-我需要做一个森林图与填充和未填充的圆圈的符号。

代码语言:javascript
复制
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值的向量来接受。

我试过了

代码语言:javascript
复制
fn.ci_norm = c(fpDrawPointCI(pch=1), fpDrawPointCI(pch=19)

但这并不管用。

因此,在加载库( forestplot )之后,但在forestplot命令之前,我尝试在我的脚本中创建它。

代码语言:javascript
复制
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))
}}

它返回一个错误,说明error in fpDrawPointCIfilled():找不到函数prFpDrawLine。有没有人能提供一个例子,说明他们是如何修改forestplot中的fpDrawNormalCI函数的?

谢谢,克里斯

EN

回答 2

Stack Overflow用户

发布于 2017-02-16 12:58:58

尝试使用您的初始干净代码并添加以下内容:

代码语言:javascript
复制
meta.ci.pch = 21

(或任何其他代码)来设置点样式的大小和形状。可以使用?points查看所有打印字符的样式。可以在连接列表中设置整个样式列表,该列表的长度与打印数量一样长。只需连接:

代码语言:javascript
复制
meta.ci.pch = c(19, 3, 9)

你最终会得到每一个不同的符号。

我认为你可以使用以下命令来改变圆圈的大小:

代码语言:javascript
复制
circles.cex = 1.1   or   circles.cex = .8

或指示默认大小的110%或默认大小的80%的任何其它数字。但是第一个应该允许你使用中空和填充的形状。

票数 0
EN

Stack Overflow用户

发布于 2017-02-16 22:56:14

排除您遇到的特定问题的故障是,prFpDrawLine函数不是从forestplot库导出的;它是一个内部函数。一个标准的警告是,未导出的函数可能会在库的未来版本中更改,而不会发出警告。也就是说..。

如果将prFpDrawLine替换为forestplot:::prFpDrawLine,则三重冒号将在库中查找可能导出也可能不导出的对象。在这种情况下,它将找到未导出的函数prFpDrawLine,并且您的代码应该可以工作。

帐单

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42260137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档