首页 > 其他分享 >解决shiny 中DT无法渲染sparkline样式

解决shiny 中DT无法渲染sparkline样式

时间:2023-11-09 21:48:46浏览次数:34  
标签:iris 渲染 sparkline library 图表 DT shiny

library(shiny)
library(DT)
library(sparkline)
library(tidyverse)
data(iris)
library(htmlwidgets)

cb <- htmlwidgets::JS('function(){debugger;HTMLWidgets.staticRender();}')

ui <- fluidPage(
    htmlwidgets::getDependency('sparkline'),
    DTOutput("table")
)

server <- function(input, output) {
    test <- reactive({
        iris %>%
    group_by(Species) %>%
    summarise(n = n()) %>%
    mutate(spark = split(iris$Sepal.Length, iris$Species) %>%
        map(~ sparkline(.x, type = "bar")) %>%
        map(htmltools::as.tags) %>%
        map_chr(as.character))
    })

    output$table <- renderDataTable({
        datatable(test(),
        escape = FALSE,
        options = list(drawCallback=cb)
        )
    })
}

shinyApp(ui, server)

这段代码创建了一个Shiny应用,它使用DT(DataTables)表格来显示鸢尾花(iris)数据集的汇总信息,同时在每行中嵌入sparkline图表,显示不同物种(Species)的萼片长度(Sepal.Length)分布。

以下是代码的详细解释:

  1. 首先,加载了所需的R包:shinyDTsparklinetidyversehtmlwidgets。此外,使用data(iris)加载了鸢尾花数据集,以便在应用中使用。

  2. 创建了一个JavaScript回调函数cb,该函数将在表格绘制后调用,用于渲染sparkline图表。这个函数在应用中并没有直接使用,但可以在需要进行调试或自定义时使用。

  3. 在Shiny应用的UI部分,使用htmlwidgets::getDependency加载sparkline包所需的依赖项,包括相关的JavaScript和CSS资源。

  4. 在Server部分,首先创建了一个reactive函数test,用于处理数据并生成带有sparkline图表的汇总信息。在这个函数中,对鸢尾花数据集进行分组、汇总和sparkline图表的生成。map函数用于将sparkline图表应用于每个物种的萼片长度,将结果存储在名为spark的新列中。

  5. 使用renderDataTable函数来渲染数据表格。表格的数据源是通过调用test()获得的,即上一步中生成的带有sparkline图表的数据帧。escape参数设置为FALSE,以确保sparkline图表能够正常渲染。options参数中包含了drawCallback,这将在表格绘制后执行,用于确保sparkline图表正确渲染。

标签:iris,渲染,sparkline,library,图表,DT,shiny
From: https://www.cnblogs.com/biohujun/p/17822924.html

相关文章

  • Eclipse添加DTD文件
    以iBATIS编写SqlMapConfig配置文件为例,添加sql-map-config-2.dtd到Eclipse中,从而获得xml自动的提示的功能,能更好的按照iBATIS官方定义的规范来编写xml文档.<!DOCTYPEsqlMapConfigPUBLIC"-//ibatis.apache.org//DTDSQLMapConfig2.0//EN""http://ibatis.apache.......
  • 基于工业无线DTU的空气污染监测防治方案
    ​秋冬季是我国大气污染天气的高发、频发期,也是大气污染防治的关键期、敏感期。针对空气质量的监测和防治,可以利用佰马工业无线DTU,搭建分布式大气传感器监测网络,实现对广域空气质量、成分、变化的实时监测,从而实现对大气污染的有效治理,对空气环境质量的有效保护。   一、......
  • AAC音频ADTS的分析
    一种有损的音频压缩格式。,AAC音频格式有两种类型:ADIF音频数据交换格式ADTS音频数据传输流ADTS可以在任意帧解码,每一帧都拥有头信息。ADTSHeader+AACES共同组成了一个完整的ADTS帧。ADTSHeader可以是7个字节或9个字节,包含了采样率、通道数、帧长度等信息。csd-0参数AAC编解码......
  • MindtheGap队伍实录
    正式比赛\(**Year2023**\)\(ICPCNanjing:steel\)\(CCPCShenzhen:\)未开始\(ICPCJinan:\)未开始交题圣经"语言别交错题目别交错longlong有没有开空间够不够大小够不够自己的样例试过没格式'\n'有没有板子有没有写错有没有取题目要求的模数读入的变量类型与题目保......
  • Go-zero对接dtm
    go-zero对接分布式事务dtm保姆式教程一、首先需要注意go-zero1.2.4版本以上,这个一定要注意dtm你用最新的就行了二、clonedtmgitclonehttps://github.com/yedf/dtm.git三、配置文件1、找到项目跟文件夹下的conf.sample.yml2、cpconf.sample.ymlconf.yml3、使用e......
  • DTSE Tech Talk | 第47期:MoE:LLM终身学习的可能性
    本文分享自华为云社区《DTSETechTalk|第47期:MoE:LLM终身学习的可能性》,作者:华为云社区精选。在DTSETechTalk的第47期直播《MoE:LLM终身学习的可能性》中,昇思MindSpore技术专家吕老师与各位开发者分享有关于LLMlifelonglearning的概念,帮助大家了解持续学习的特性与理论知识,同......
  • AI数字人制作工具SadTalker教程
    AI数字人(ArtificialIntelligenceDigitalHuman)是一种采用人工智能技术和仿真技术创建的虚拟人物。它结合了人类外貌、语音和认知能力,能够与人类进行交流和互动。AI数字人的外貌通常由计算机图形学和虚拟现实技术生成,可以根据需要设计不同的外表特征、面部表情和肢体语言。而......
  • vim 的nerdtree插件中如何显示当前打开的文件路径?
    树形目录nerdtree插件中如何显示当前打开的文件路径?类似这样:只需在.vimrc文件中加入下面3行就可以了"设置NerdTreemap<F3>:NERDTreeMirror<CR>map<F3>:NERDTreeToggle<CR>map<leader>r:NERDTreeFind<cr>......
  • java 开发中VO、PO、DO、DTO、BO、QO、DAO、POJO各种傻傻分不清
    VO(ValueObject):值对象,主要用于业务层之间的数据传递,是方法返回类型。例如,一个方法需要返回用户的信息,可以创建一个UserVO,包含用户的姓名、年龄等信息。PO(PersistentObject):持久化对象,用于表示数据库中的一条记录,与数据库表一一对应。例如,数据库中有一个用户表,可以创建一个Use......
  • linux系统中dtb文件的作用
    在Linux系统中,dtb文件是DeviceTreeBlob(设备树二进制)的缩写。它主要用于描述硬件配置和设备信息,为内核启动时加载驱动提供必要的参数。dtb文件可以减少内核版本的数量的原因在于,同一份Linux内核代码可以在多个板卡上运行,每个板卡可以使用自己的dtb文件。在Linux内核启动过程中会......