I have created a reactable "MasterIndexTable" where the final column "Rank" in the table is a value 1 through 435. I have defined a color palette so the cell with 1 gets a red color and 435 gets a blue color. However, since the background colors from that palette are dark I want to change the font of those cell values to white.
I'm not sure how to edit an individual column's font color? I'm assuming it happens within the [Rank - colDef] component?
RtoDColorPalette <- function(x) rgb(colorRamp(c("red","blue"))(x),maxColorValue = 255)
MasterIndexTable <- reactable(
HousePVI,
columns = list(
ID_No = colDef(show = FALSE),
State = colDef(defaultSortOrder = "asc", width = 60),
District_Number = colDef(name = "District", defaultSortOrder = "asc", width = 70),
First_Name = colDef(name = "First Name"),
Last_Name = colDef(name = "Last Name"),
Member_Party = colDef(name = "Party", width = 60),
PVI_Lean = colDef(name = "PVI Lean", width = 60),
PVI_Value = colDef(name = "PVI Value", width = 60),
Rank = colDef(name = "Rank (Most Republican (1) to Most Democratic (435)", width = 230,
style = function(value) {
normalized <- (value - min(HousePVI$Rank))/(max(HousePVI$Rank) min(HousePVI$Rank))
color <- RtoDColorPalette(normalized)
list(background = color)
}
)
),
theme = reactableTheme(
color = 'black',
backgroundColor = 'white',
borderColor = 'black',
stripedColor = 'aliceblue' )
)
Inside your style function add color="white"
to the returned list
.
Using some fake data:
library(reactable)
set.seed(123)
RtoDColorPalette <- function(x) rgb(colorRamp(c("red", "blue"))(x), maxColorValue = 255)
HousePVI <- data.frame(
ID_No = 1:10,
State = LETTERS[1:10],
Rank = sample(1:10)
)
reactable(
HousePVI,
columns = list(
ID_No = colDef(show = FALSE),
Rank = colDef(
name = "Rank (Most Republican (1) to Most Democratic (435)", width = 230,
style = function(value) {
normalized <- (value - min(HousePVI$Rank)) / (max(HousePVI$Rank) - min(HousePVI$Rank))
color <- RtoDColorPalette(normalized)
list(background = color, color = "white")
}
)
),
theme = reactableTheme(
color = "black",
backgroundColor = "white",
borderColor = "black",
stripedColor = "aliceblue"
)
)