flexdashboard中如何可以有三个以上的仪表扇区?

flexdashboard中如何可以有三个以上的仪表扇区?,r,flexdashboard,R,Flexdashboard,Flexdashboard允许为其仪表指定三个扇区:“危险”、“警告”和“成功”。我想用5个测量扇区来显示我的观测值位于哪个区间。我用alpha 0.2(80%)和0.01(99%)计算了置信区间,并用它定义了5个扇区: Sector 1 = c(min(value),lower_90_ci) Sector 2 = c(lower_90_ci,lower_80_ci) Sector 3 = c(lower_80_ci, upper_80_ci) Sector 4 = c(upper_80_ci,

Flexdashboard允许为其仪表指定三个扇区:“危险”、“警告”和“成功”。我想用5个测量扇区来显示我的观测值位于哪个区间。我用alpha 0.2(80%)和0.01(99%)计算了置信区间,并用它定义了5个扇区:

Sector 1 = c(min(value),lower_90_ci)
Sector 2 = c(lower_90_ci,lower_80_ci)
Sector 3 = c(lower_80_ci, upper_80_ci)
Sector 4 = c(upper_80_ci, upper_90_ci)
Sector 5 = c(upper_90_ci, max(value))
这是flexdashboard中的标准仪表:

library(flexdashboard)

gauge(42, min = 0, max = 100, symbol = '%', gaugeSectors(
  success = c(80, 100), warning = c(40, 79), danger = c(0, 39)
))

我认为这是不可能一蹴而就的。深入研究
resolvestics
函数可以看出,它需要三个扇区,并且非常不灵活:

function (sectors, min, max) 
{
    if (is.null(sectors)) {
        sectors = sectors(success = c(min, max), warning = NULL, 
            danger = NULL, colors = c("success", "warning", "danger"))
    }
    if (is.null(sectors$success) && is.null(sectors$warning) && 
        is.null(sectors$danger)) {
        sectors$success <- c(min, max)
    }
    if (is.null(sectors$colors)) 
        sectors$colors <- c("success", "warning", "danger")
    customSectors <- list()
    addSector <- function(sector, color) {
        if (!is.null(sector)) {
            if (!is.numeric(sector) || length(sector) != 2) 
                stop("sectors must be numeric vectors of length 2", 
                  call. = FALSE)
            customSectors[[length(customSectors) + 1]] <<- list(lo = sector[[1]], 
                hi = sector[[2]], color = color)
        }
    }
    sectors$colors <- rep_len(sectors$colors, 3)
    addSector(sectors$success, sectors$colors[[1]])
    addSector(sectors$warning, sectors$colors[[2]])
    addSector(sectors$danger, sectors$colors[[3]])
    customSectors
}
<environment: namespace:flexdashboard>
功能(扇区、最小值、最大值)
{
如果(为空(扇区)){
扇区=扇区(成功=c(最小,最大),警告=空,
危险=NULL,颜色=c(“成功”,“警告”,“危险”))
}
如果(is.null(扇区$success)和is.null(扇区$warning)和
is.null(扇区$danger)){

扇区成功率

如果意图在中间有最佳的范围,在上侧和下侧都有警告和危险,我尝试这样做:

gauge(value = 95,  # For example
      min = 0,
      max = 100,
      sectors = gaugeSectors(
        success = c(20, 80),
        warning = c(10, 90),
        danger = c(0, 100)
        )
      )

您可能需要确保扇区覆盖整个范围(最小-最大)。范围内但不属于任何扇区的任何值都将使用默认颜色(成功)。

谢谢!在使用gauge()定义颜色并将其作为变量传递给gaugeSectors(colors=c)之前,我还考虑了使用函数的解决方法(color1,color2,color3)-参数。