如果kablextra/Formattable/dplyr的值为负值,如何在一个单元格中仅反转一个条

如果kablextra/Formattable/dplyr的值为负值,如何在一个单元格中仅反转一个条,r,dplyr,knitr,kableextra,formattable,R,Dplyr,Knitr,Kableextra,Formattable,我有一个表格,我想做一个excel条形图,比如() 我遇到了一个无法反转图形()的负值问题。 正如你所看到的,我有一个值-5,它不是反向的,也不是比例的。 我想如果它是负的,我倒过来吧 我的csv数据库 我的代码: library(knitr) library(kableExtra) library(formattable) library(dplyr) library(stringr) dat = read.csv("/dat.csv", header = TRUE, sep =';')

我有一个表格,我想做一个excel条形图,比如() 我遇到了一个无法反转图形()的负值问题。 正如你所看到的,我有一个值-5,它不是反向的,也不是比例的。 我想如果它是负的,我倒过来吧

我的csv数据库

我的代码:

library(knitr)
library(kableExtra)
library(formattable)
library(dplyr)
library(stringr)

dat = read.csv("/dat.csv", header = TRUE, sep =';')

dat[] %>%
  mutate(
    KP1 = color_bar("lightgreen")(KP1),
    KP2 = color_bar("lightgreen")(KP2),
    KP3 = color_bar("lightgreen")(KP3),
    Exposure.1 = color_bar("lightgreen")(Exposure.1),
    Exposure.2 = color_bar("lightgreen")(Exposure.2),
    KP4 = color_bar("lightgreen")(KP4),
    KP5 = color_bar("lightgreen")(KP5)

  ) %>%
  kable("html", escape = F) %>%
  kable_styling("hover", full_width = F) %>%
  column_spec(5, width = "10cm") %>%
  column_spec(1,color = 'black', bold = T, border_right = T) %>%
  column_spec(1:5,width = "12.5%") %>%
  row_spec(2,extra_css = "border-top = 10px")

在此情况下,您需要编写自己的颜色栏函数

library(kableExtra)
library(dplyr)

cb <- function(x) {
  range <- max(abs(x))
  width <- round(abs(x / range * 50), 2)
  ifelse(
    x > 0,
    paste0(
      '<span style="display: inline-block; border-radius: 2px; ', 
      'padding-right: 2px; background-color: lightgreen; width: ', 
      width, '%; margin-left: 50%; text-align: left;">', x, '</span>'
    ),
    paste0(
      '<span style="display: inline-block; border-radius: 2px; ', 
      'padding-right: 2px; background-color: lightpink; width: ', 
      width, '%; margin-right: 50%; text-align: right; float: right; ">', x, '</span>'
    )
  )
}

dt <- data.frame(
  A = 1:10,
  B = -5:4
)

dt %>%
  mutate(
    A = cb(A),
    B = cb(B)
  ) %>%
  kable(escape = F) %>%
  kable_styling("hover", full_width = F) %>%
  column_spec(1:2, width = "3cm") %>%
  row_spec(0, align = "c")
库(kableExtra)
图书馆(dplyr)
cb%
可移动(逸出=F)%>%
可缩放样式(“悬停”,全宽=F)%>%
列规格(1:2,宽度=“3cm”)%>%
行规格(0,align=“c”)

在这种情况下,您需要编写自己的颜色栏函数

library(kableExtra)
library(dplyr)

cb <- function(x) {
  range <- max(abs(x))
  width <- round(abs(x / range * 50), 2)
  ifelse(
    x > 0,
    paste0(
      '<span style="display: inline-block; border-radius: 2px; ', 
      'padding-right: 2px; background-color: lightgreen; width: ', 
      width, '%; margin-left: 50%; text-align: left;">', x, '</span>'
    ),
    paste0(
      '<span style="display: inline-block; border-radius: 2px; ', 
      'padding-right: 2px; background-color: lightpink; width: ', 
      width, '%; margin-right: 50%; text-align: right; float: right; ">', x, '</span>'
    )
  )
}

dt <- data.frame(
  A = 1:10,
  B = -5:4
)

dt %>%
  mutate(
    A = cb(A),
    B = cb(B)
  ) %>%
  kable(escape = F) %>%
  kable_styling("hover", full_width = F) %>%
  column_spec(1:2, width = "3cm") %>%
  row_spec(0, align = "c")
库(kableExtra)
图书馆(dplyr)
cb%
可移动(逸出=F)%>%
可缩放样式(“悬停”,全宽=F)%>%
列规格(1:2,宽度=“3cm”)%>%
行规格(0,align=“c”)