Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R forestplot软件包,是否有方法为方框指定可变颜色?_R_Plot_Colors_Forestplot - Fatal编程技术网

使用R forestplot软件包,是否有方法为方框指定可变颜色?

使用R forestplot软件包,是否有方法为方框指定可变颜色?,r,plot,colors,forestplot,R,Plot,Colors,Forestplot,作为示例,我将使用R forestplot vignette()中的代码: 库(forestplot) #来自“rmeta”包的Cochrane数据 cochrane_from_rmeta这可以使用您自己的自定义线条绘制功能: library(forestplot) # Cochrane data from the 'rmeta'-package cochrane_from_rmeta <- structure(list( mean = c(NA, NA, 0.578, 0

作为示例,我将使用R forestplot vignette()中的代码:

库(forestplot)
#来自“rmeta”包的Cochrane数据

cochrane_from_rmeta这可以使用您自己的自定义线条绘制功能:

library(forestplot)
# Cochrane data from the 'rmeta'-package
cochrane_from_rmeta <- 
  structure(list(
    mean  = c(NA, NA, 0.578, 0.165, 0.246, 0.700, 0.348, 0.139, 1.017, NA, 0.531), 
    lower = c(NA, NA, 0.372, 0.018, 0.072, 0.333, 0.083, 0.016, 0.365, NA, 0.386),
    upper = c(NA, NA, 0.898, 1.517, 0.833, 1.474, 1.455, 1.209, 2.831, NA, 0.731)),
    .Names = c("mean", "lower", "upper"), 
    row.names = c(NA, -11L), 
    class = "data.frame")

tabletext<-cbind(
  c("", "Study", "Auckland", "Block", 
    "Doran", "Gamsu", "Morrison", "Papageorgiou", 
    "Tauesch", NA, "Summary"),
  c("Deaths", "(steroid)", "36", "1", 
    "4", "14", "3", "1", 
    "8", NA, NA),
  c("Deaths", "(placebo)", "60", "5", 
    "11", "20", "7", "7", 
    "10", NA, NA),
  c("", "OR", "0.58", "0.16", 
    "0.25", "0.70", "0.35", "0.14", 
    "1.02", NA, "0.53"))

fn <- local({
  i = 0
  no_lines <- sum(!is.na(cochrane_from_rmeta$mean))
  b_clrs = colorRampPalette(colors=c("pink", "blue"))(no_lines)
  l_clrs = colorRampPalette(colors=c("blue", "pink"))(no_lines)

  function(..., clr.line, clr.marker){
    i <<- i + 1
    fpDrawNormalCI(..., clr.line = l_clrs[i], clr.marker = b_clrs[i])
  }
})
forestplot(tabletext, fn.ci_norm = fn,
           cochrane_from_rmeta,new_page = TRUE,
           is.summary=c(TRUE,TRUE,rep(FALSE,8),TRUE),
           clip=c(0.1,2.5), 
           xlog=TRUE, 
           col=fpColors(summary="royalblue"))
库(forestplot)
#来自“rmeta”包的Cochrane数据

cochrane_from_rmeta这可以使用您自己的自定义线条绘制功能:

library(forestplot)
# Cochrane data from the 'rmeta'-package
cochrane_from_rmeta <- 
  structure(list(
    mean  = c(NA, NA, 0.578, 0.165, 0.246, 0.700, 0.348, 0.139, 1.017, NA, 0.531), 
    lower = c(NA, NA, 0.372, 0.018, 0.072, 0.333, 0.083, 0.016, 0.365, NA, 0.386),
    upper = c(NA, NA, 0.898, 1.517, 0.833, 1.474, 1.455, 1.209, 2.831, NA, 0.731)),
    .Names = c("mean", "lower", "upper"), 
    row.names = c(NA, -11L), 
    class = "data.frame")

tabletext<-cbind(
  c("", "Study", "Auckland", "Block", 
    "Doran", "Gamsu", "Morrison", "Papageorgiou", 
    "Tauesch", NA, "Summary"),
  c("Deaths", "(steroid)", "36", "1", 
    "4", "14", "3", "1", 
    "8", NA, NA),
  c("Deaths", "(placebo)", "60", "5", 
    "11", "20", "7", "7", 
    "10", NA, NA),
  c("", "OR", "0.58", "0.16", 
    "0.25", "0.70", "0.35", "0.14", 
    "1.02", NA, "0.53"))

fn <- local({
  i = 0
  no_lines <- sum(!is.na(cochrane_from_rmeta$mean))
  b_clrs = colorRampPalette(colors=c("pink", "blue"))(no_lines)
  l_clrs = colorRampPalette(colors=c("blue", "pink"))(no_lines)

  function(..., clr.line, clr.marker){
    i <<- i + 1
    fpDrawNormalCI(..., clr.line = l_clrs[i], clr.marker = b_clrs[i])
  }
})
forestplot(tabletext, fn.ci_norm = fn,
           cochrane_from_rmeta,new_page = TRUE,
           is.summary=c(TRUE,TRUE,rep(FALSE,8),TRUE),
           clip=c(0.1,2.5), 
           xlog=TRUE, 
           col=fpColors(summary="royalblue"))
库(forestplot)
#来自“rmeta”包的Cochrane数据

来自rmeta的cochrane_
?fpColors
告诉我们:“如果在forestplot中每行有多个值,可以将颜色设置为向量,其中第一个值表示第一行/框,第二个值表示第二行/框等。”因此,我不认为不修改函数就可以做您想做的事情。
?fpColors
告诉我们:“如果forestplot中每行有多个值,则可以将颜色设置为向量,其中第一个值表示第一行/框,第二个值表示第二行/框等。“因此,我不认为不修改函数就可以做任何你想做的事情。很抱歉再次挖掘这个问题,但我一直在修改上述代码,以便为图表中的每个方框获得替代颜色。很简单,但我想不出来。假设图形上有三个框,代码可能是这样的。。。。。。col=fpColors(框=“皇家蓝”、“绿”、“黄”)、。。。。。。但这对我不起作用(@user2363642-fpColors目前不允许这样做。您需要创建自己的绘图函数来处理这种情况。在上面的示例中,只需设置
b_clrs=c(“皇家蓝”、“绿色”、“黄色”)
你很好。这有点粗糙,但它可以完成任务。很抱歉再次挖掘这个问题,但我一直在修改上面的代码,以便为图表中的每个方框获得替代颜色。非常简单,但我无法计算。假设图表上有三个方框,代码可能是这样的?……col=fpColors(box=“royalblue”、“green”、“yellow”),……但这对我不起作用。:(@user2363642-fpColors目前不允许这样做。您需要创建自己的绘图函数来处理这种情况。在上面的示例中,只需设置
b_clrs=c(“royalblue”、“green”、“yellow”)
和您的罚款。这有点粗糙,但它可以完成任务。
library(forestplot)
# Cochrane data from the 'rmeta'-package
cochrane_from_rmeta <- 
  structure(list(
    mean  = c(NA, NA, 0.578, 0.165, 0.246, 0.700, 0.348, 0.139, 1.017, NA, 0.531), 
    lower = c(NA, NA, 0.372, 0.018, 0.072, 0.333, 0.083, 0.016, 0.365, NA, 0.386),
    upper = c(NA, NA, 0.898, 1.517, 0.833, 1.474, 1.455, 1.209, 2.831, NA, 0.731)),
    .Names = c("mean", "lower", "upper"), 
    row.names = c(NA, -11L), 
    class = "data.frame")

tabletext<-cbind(
  c("", "Study", "Auckland", "Block", 
    "Doran", "Gamsu", "Morrison", "Papageorgiou", 
    "Tauesch", NA, "Summary"),
  c("Deaths", "(steroid)", "36", "1", 
    "4", "14", "3", "1", 
    "8", NA, NA),
  c("Deaths", "(placebo)", "60", "5", 
    "11", "20", "7", "7", 
    "10", NA, NA),
  c("", "OR", "0.58", "0.16", 
    "0.25", "0.70", "0.35", "0.14", 
    "1.02", NA, "0.53"))

fn <- local({
  i = 0
  no_lines <- sum(!is.na(cochrane_from_rmeta$mean))
  b_clrs = colorRampPalette(colors=c("pink", "blue"))(no_lines)
  l_clrs = colorRampPalette(colors=c("blue", "pink"))(no_lines)

  function(..., clr.line, clr.marker){
    i <<- i + 1
    fpDrawNormalCI(..., clr.line = l_clrs[i], clr.marker = b_clrs[i])
  }
})
forestplot(tabletext, fn.ci_norm = fn,
           cochrane_from_rmeta,new_page = TRUE,
           is.summary=c(TRUE,TRUE,rep(FALSE,8),TRUE),
           clip=c(0.1,2.5), 
           xlog=TRUE, 
           col=fpColors(summary="royalblue"))