能否以R格式表增加列名/标题的大小

时间:2020-06-12 08:05:28

标签: r font-size formattable

我正在使用formattable在RShiny中生成一个表。我知道如何增加表中数据字体的大小,但无法弄清楚如何增加列名/标题的大小。

输出数据:

.grid-container{
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  height: $grid-container-height;
  width:$grid-width;
  max-width: $grid-width;
  overflow: hidden;
  background: yellowgreen;  
}

.grid{ 
  height:100%; 
  width:100%; 
  display:grid;
  grid-template-rows:repeat(2,1fr);
  grid-template-columns:repeat(4,1fr); 
  grid-gap:10px 7px;
  flex-basis: 100%;
}

.slide_view{ 
  transform: translateY(-100%) /* 0% to show the first grid, -100% to show the second grid, and so forth */; 
}

闪亮的应用代码

structure(list(athlete = c("Joe Bloggs", "Joe Bloggs"), WeekEnding = structure(c(18329, 
18336), class = "Date"), Total.Training..hrs. = c(14.2, 15.7), 
    TimeInZones = c(7.9, 11.4), TimeInZones.percent = c(55.7, 
    72.7), T2.hrs = c(2.3, 5.6), HR_complete_percent = c(100, 
    100), Time...task..hrs. = c(11.6, 7.2), Rowing.volume.km. = c(118.0552, 
    101.9185), On.water..km. = c(108.3552, 74.1185), Ergo..km. = c(9.7, 
    27.8)), row.names = 1:2, class = "data.frame")

以上面的代码为例,我的列标题为library(tidyverse) library(rmarkdown) library(shiny) library(shinythemes) library(dplyr) library(readr) library(data.table) library(formattable) ui <- (fluidPage( titlePanel("Training Report"), sidebarPanel( selectInput("dateInput", "Week Ending", choices = Data$WeekEnding, width = "50%"), selectInput("athleteInput", "Athlete", choices = Data$athlete, width ="50%"), mainPanel( br(), strong(h3("Data")), formattableOutput("results", width = "170%"))))) server <- (function(input, output){ output$results <- renderFormattable({ tableFilter <- filter(Data, Data$athlete == input$athleteInput) Table <- data.table( "Variable" = c( "Total training (hrs)", "HR data (%)", "T2 hours", "Time @ task (hrs)", "Rowing volume (km)"), "Last Week" = c(sum(tableFilter$Total.Training..hrs.[tableFilter$WeekEnding == as.Date(input$dateInput)]), (sum(tableFilter$HR_complete_percent[tableFilter$WeekEnding == as.Date(input$dateInput)])), sum(tableFilter$T2.hrs[tableFilter$WeekEnding == as.Date(input$dateInput)]), sum(tableFilter$Time...task..hrs.[tableFilter$WeekEnding == as.Date(input$dateInput)]), sum(tableFilter$Rowing.volume.km.[tableFilter$WeekEnding == as.Date(input$dateInput)])), "Change" = percent(c((sum(tableFilter$Total.Training..hrs.[tableFilter$WeekEnding == as.Date(input$dateInput)]) - sum(tableFilter$Total.Training..hrs.[tableFilter$WeekEnding == as.Date(input$dateInput)-7]))/ sum(tableFilter$Total.Training..hrs.[tableFilter$WeekEnding == as.Date(input$dateInput)-7]), " ", (sum(tableFilter$T2.hrs[tableFilter$WeekEnding == as.Date(input$dateInput)]) - sum(tableFilter$T2.hrs[tableFilter$WeekEnding == as.Date(input$dateInput)-7]))/ sum(tableFilter$T2.hrs[tableFilter$WeekEnding == as.Date(input$dateInput)-7]), (sum(tableFilter$Time...task..hrs.[tableFilter$WeekEnding == as.Date(input$dateInput)]) - sum(tableFilter$Time...task..hrs.[tableFilter$WeekEnding == as.Date(input$dateInput)-7]))/ sum(tableFilter$Time...task..hrs.[tableFilter$WeekEnding == as.Date(input$dateInput)-7]), (sum(tableFilter$Rowing.volume.km.[tableFilter$WeekEnding == as.Date(input$dateInput)]) - sum(tableFilter$Rowing.volume.km.[tableFilter$WeekEnding == as.Date(input$dateInput)-7]))/ sum(tableFilter$Rowing.volume.km.[tableFilter$WeekEnding == as.Date(input$dateInput)-7])), d=0)) Table$Change[is.nan(Table$Change)] <- NA Table$Change[is.infinite(Table$Change)] <- NA Table$Change <- as.character(Table$Change) Table$Change <- ifelse(Table$Change == "NA", " ", Table$Change) formattable(Table, align= c("l", "c", "c", "c", "c"), list(Change = formatter("span", style = x ~ style(font.weight = "bold", "font-size" = "20px", color = ifelse(x =="0%"| x == "-0%", "black", ifelse(x > 0, "green", ifelse(x < 0, "red", "black")))), x ~ icontext(ifelse(x ==" " | x =="0%"| x == "-0%", "", ifelse(x>0, "arrow-up", ifelse(x < 0, "arrow-down", " "))),x)), Variable = formatter("span", style = ~ style(color = "black", font.weight = "bold", "font-size" = "20px")), `Last Week` = formatter("span", style = ~ style(color = "black","font-size" = "20px")))) }) }) shinyApp(ui = ui, server = server) Variable,我想增加文本的大小。 Last Week仅增加表格/这些列标题下的文本的字体大小。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以尝试执行与here类似的操作。显然,formatter将返回一个函数,用于将数据向量转换为以HTML和CSS表示的格式化数据。因此,在调用formatter之前,您可以通过自定义formattable函数传递列名来设置字体大小。让我知道这是否有效。

library(formattable)
data(mtcars)

df <- mtcars

set_font_size <- formatter("span", style = "font-size:20px")

names(df) <- set_font_size(names(df))

formattable(df)

修改

或者,您可以更改ui中具有较大字体的CSS。这似乎可以与其他formattable调用一起使用。

ui <- (fluidPage( 
  tags$head(
    tags$style(HTML("
      thead {
        font-size: 20px;
      }
    "))
  ),
  titlePanel("Training Report"), 
  sidebarPanel(
    selectInput("dateInput", "Week Ending", choices = Data$WeekEnding, width = "50%"),
    selectInput("athleteInput", "Athlete", choices = Data$athlete, width ="50%"),
    mainPanel(
      br(),
      strong(h3("Data")), 
      formattableOutput("results", width = "170%")))))

输出

enter image description here