你知道R语言有多少自带颜色吗?

作者

Shalom

发布日期

2023年5月24日

length(colors())
[1] 657

如何使用

  1. 新建app.R,安装相应包(bslib包需要从github上安装,安装方式为remotes::install_github('rstudio/bslib')),app.R文件内容为:
#remotes::install_github('rstudio/bslib')
library(shiny)
library(rclipboard)
library(bslib)
library(tidyverse)

c2hex<-function(color){
  my_rgb<-col2rgb(color)
  paste(sprintf("#%02X", my_rgb[1,]), sprintf("%02X", my_rgb[2,]), sprintf("%02X", my_rgb[3,]), sep = "")
}
c2rgb<-function(color){
  my_rgb<-col2rgb(color)
  sprintf("rgb(%s)",paste0(col2rgb(color),collapse = ','))
}

colorUI <- function(id,col) {
  ns <- NS(id)
    card(
      div(style = sprintf("background-color: %s; height: 60px;text-align:center;font-size:20px",c2hex(col)),
          class="flex",
          col),
      card_footer(class="flex",style="font-size:12px",
                  actionLink(ns('cp_col'),col),
                  actionLink(ns('cp_hex'),c2hex(col)),
                  actionLink(ns('cp_rgb'),c2rgb(col))
                  )
    )
}

colorServer <- function(id,col) {
  moduleServer(
    id,
    function(input, output, session) {
      observeEvent(input$cp_col,{
        clipr::write_clip(col)
        showNotification('复制成功', duration = 2)
      })
      observeEvent(input$cp_hex,{
        clipr::write_clip(c2hex(col))
        showNotification('复制成功', duration = 2)
      })
      observeEvent(input$cp_rgb,{
        clipr::write_clip(c2rgb(col))
        showNotification('复制成功', duration = 2)
      })
    }
  )
}


ui <- page_navbar(
  title='R语言颜色',
  header = tagList(
    rclipboardSetup(),
    includeCSS('www/custom.css')
  ),
  nav_panel('Color',
            layout_column_wrap(
              width = 1/6,
              !!!map(colors(),~colorUI(.x,.x))
            ))
)

server <- function(input, output, session) {
  walk(colors(),~colorServer(.x,.x))
}

shinyApp(ui, server)
  1. app.R同级目录新建www 文件夹,在www 文件夹下新建custom.css文件,custom.css文件内容为:
.flex {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  justify-content: space-around;
  align-items: stretch;
  align-content: space-around
}
  1. 在RStudio中打开app.R,点击右上角Run App启动应用

  2. 查看颜色,点击颜色名可复制相应格式的颜色代码

目录结构

├── app.R
└── www
    └── custom.css

在线链接

  1. 首选本地(在你自己的电脑上)启动该应用

  2. 我部署的在线版(不推荐使用),https://slr95.shinyapps.io/color/