0

我学习 R 还不到一周,并且正在努力解决这个特殊问题。当我导入此表时: 在此处输入图像描述

使用read.csv,下面的代码会为 [0.05, 0.20] 范围之外的数字生成不正确的调色板。当我尝试使用rgb(get_color(x), maxColorValue = 255)超出范围的数字(例如 0.21)时,我收到以下错误消息:

rgb(get_color(x), maxColorValue = 255) 中的错误:颜色强度 NA,不在 0:255

我认为这意味着当我尝试生成调色板时,rgb 颜色在 255 之外。我从这个网站获取了颜色生成代码:

https://themockup.blog/posts/2020-05-13-reactable-tables-the-rest-of-the-owl/

感谢您的帮助,如果我需要添加一些东西,请告诉我!

library(scales)
library(tidyverse)
library(reactable)
Scores <- read_csv("Scores.csv")

make_color_pal <- function(colors, bias = 1) {
  get_color <- colorRamp(colors, bias = bias)
  function(x) rgb(get_color(x), maxColorValue = 255)
}

good_color <- make_color_pal(c("#ffffff", "#f2fbd2", "#c9ecb4", "#93d3ab", "#35b0ab"), bias = 2)
good_color(seq(0.1, 0.9, length.out = 12))

Scores %>%
  mutate(workshop1 = round(workshop1, 1)) %>%
  reactable(
    pagination = FALSE,
    compact = TRUE,
    borderless = FALSE,
    striped = FALSE,
    fullWidth = FALSE,
    defaultColDef = colDef(
      align = "center",
      minWidth = 110
    ),


    # This part allows us to apply specific things to each column
    columns = list(
      workshop1 = colDef(
        name = "Workshop 1",
        style = function(value) {
          value
    
          normalized <- (value - min(Scores$workshop1)) / (max(Scores$workshop1) - min(Scores$workshop1))
         
          color <- good_color(normalized)
          list(background = color)
        },
        format = colFormat(digits = 2),
        minWidth = 100
      ),
      workshop2 = colDef(
        name = "Workshop 2",
        style = function(value) {
          value
         
          normalized <- (value - min(Scores$workshop2)) / (max(Scores$workshop2) - min(Scores$workshop2))
    
          color <- good_color(normalized)
          list(background = color)
        },
        format = colFormat(digits = 2),
        minWidth = 100
      ),
      workshop3 = colDef(
        name = "Workshop 3",
        style = function(value) {
          value
       
          normalized <- (value - min(Scores$workshop3)) / (max(Scores$workshop3) - min(Scores$workshop3))
          
          color <- good_color(normalized)
          list(background = color)
        },
        format = colFormat(digits = 2),
        minWidth = 100
      ),
      workshop4 = colDef(
        name = "Workshop 4",
        style = function(value) {
          value
   
          normalized <- (value - min(Scores$workshop4)) / (max(Scores$workshop4) - min(Scores$workshop4))
          
          color <- good_color(normalized)
          list(background = color)
        },
        format = colFormat(digits = 2),
        minWidth = 100
      )
    )
  )
4

0 回答 0