R语言中的shiny框架

R语言中的shiny框架

  • Shiny 的基本概念
  • 基本用法示例
  • 常见用法示例
    • 1. 输入控件
    • 2. 输出控件
    • 3. 动态 UI
    • 4. 数据传递和反应式编程
  • 高级功能
    • 1. 使用 shinyjs
    • 2. 使用 shinythemes

Shiny 是一个 R 语言的框架,用于构建交互式的网页应用,可以让用户以最少的 HTML、CSS 和 JavaScript 代码开发动态的Web 应用程序,Shiny 主要优点是能够将 R 的分析和可视化能力直接嵌入到 Web应用中,从而使数据分析变得更直观和易于交互,通过结合 UI设计和服务器逻辑,可创建各种功能丰富的应用,包括数据可视化、动态输入和响应式编程等

Shiny 的基本概念

Shiny 应用程序主要由两个部分组成:
1. UI(用户界面): 定义应用的布局和外观
2. Server(服务器逻辑): 定义应用的逻辑和数据处理

基本用法示例

library(shiny)# Define UI
ui <- fluidPage(titlePanel("Hello Shiny!"),sidebarLayout(sidebarPanel(sliderInput("num", "选择一个数字", 1, 100, 50)),mainPanel(textOutput("value")))
)# Define server logic
server <- function(input, output) {output$value <- renderText({paste("你选择的数字是", input$num)})
}# Run the application
shinyApp(ui = ui, server = server)

效果
在这里插入图片描述

常见用法示例

1. 输入控件

Shiny 提供了多种输入控件,包括:

  • textInput()
  • numericInput()
  • sliderInput()
  • selectInput()
  • checkboxInput()
  • radioButtons()

示例:滑块和文本输入

library(shiny)ui <- fluidPage(sidebarLayout(sidebarPanel(sliderInput("slider", "选择一个值:", min = 1, max = 100, value = 50),textInput("text", "输入文本:", "默认文本")),mainPanel(textOutput("sliderValue"),textOutput("textValue")))
)server <- function(input, output) {output$sliderValue <- renderText({paste("滑块的值是:", input$slider)})output$textValue <- renderText({paste("输入的文本是:", input$text)})
}shinyApp(ui = ui, server = server)

效果
在这里插入图片描述

2. 输出控件

Shiny 提供了多种输出控件,用于展示数据和图表,包括:

  • textOutput()
  • verbatimTextOutput()
  • plotOutput()
  • tableOutput()
  • imageOutput()

示例:绘制图表

library(shiny)ui <- fluidPage(sidebarLayout(sidebarPanel(sliderInput("num", "选择一个数字:", min = 1, max = 100, value = 50)),mainPanel(plotOutput("histPlot")))
)server <- function(input, output) {output$histPlot <- renderPlot({hist(rnorm(input$num), main = "随机数的直方图", xlab = "值", ylab = "频率")})
}shinyApp(ui = ui, server = server)

效果
在这里插入图片描述

3. 动态 UI

有时需要根据输入动态生成 UI 组件,这可以使用 uiOutput() 和 renderUI() 来实现

示例:动态生成文本输入框

library(shiny)ui <- fluidPage(sidebarLayout(sidebarPanel(numericInput("numInputs", "选择文本框数量:", 1, min = 1, max = 10),uiOutput("dynamicInputs")),mainPanel(verbatimTextOutput("values")))
)server <- function(input, output, session) {output$dynamicInputs <- renderUI({n <- input$numInputslapply(1:n, function(i) {textInput(paste0("text", i), paste("文本框", i))})})output$values <- renderPrint({inputs <- sapply(1:input$numInputs, function(i) {input[[paste0("text", i)]]})inputs})
}shinyApp(ui = ui, server = server)

效果
在这里插入图片描述

4. 数据传递和反应式编程

Shiny 使用反应式编程模型来处理数据的动态变化。使用 reactive() 和 reactiveVal() 可以创建反应式值和表达式

示例:反应式表达式

library(shiny)ui <- fluidPage(sidebarLayout(sidebarPanel(sliderInput("num", "选择一个数字:", min = 1, max = 100, value = 50)),mainPanel(textOutput("sumValue")))
)server <- function(input, output) {reactiveSum <- reactive({input$num + 10})output$sumValue <- renderText({paste("数字加10的结果是:", reactiveSum())})
}shinyApp(ui = ui, server = server)

效果
在这里插入图片描述

高级功能

1. 使用 shinyjs

shinyjs 可用来增强 Shiny 应用的功能,比如隐藏和显示 UI 元素、执行 JavaScript 代码等

library(shiny)
library(shinyjs)ui <- fluidPage(useShinyjs(),  # 使 shinyjs 可用actionButton("toggle", "切换文本框"),textInput("txt", "文本框", "初始值")
)server <- function(input, output) {observeEvent(input$toggle, {toggle("txt")  # 切换文本框的显示和隐藏})
}shinyApp(ui = ui, server = server)

效果
在这里插入图片描述

2. 使用 shinythemes

shinythemes 提供了多种预设的主题,可以用来美化 Shiny 应用的界面

library(shiny)
library(shinythemes)ui <- fluidPage(theme = shinytheme("darkly"),  # 使用 darkly 主题titlePanel("Shiny 应用的主题"),sidebarLayout(sidebarPanel(sliderInput("num", "选择一个数字:", min = 1, max = 100, value = 50)),mainPanel(textOutput("value")))
)server <- function(input, output) {output$value <- renderText({paste("你选择的数字是", input$num)})
}shinyApp(ui = ui, server = server)

效果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1543057.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp出现 下拉框等组件被遮挡 的分析

目录 1. 问题所示2. 代码复现3. 解决方法3.1 下拉框被遮挡3.2 uni-collapse-item 无法下拉的问题 1. 问题所示 下拉框被遮挡的问题&#xff1a; uni-collapse-item组件无法下拉的问题&#xff1a; 2. 代码复现 博主的代码精简如下&#xff1a; <template><view>…

离职员工客户如何管理?解锁2024企业微信新功能

公司里员工来来去去很正常&#xff0c;但每次有人走&#xff0c;老板们都会头疼&#xff0c;因为客户信息得有人接着管。客户对公司来说太重要了&#xff0c;不能丢。2024年&#xff0c;企业微信出了个新招&#xff0c;就是员工离职后&#xff0c;客户信息可以轻松转给新来的员…

kalman滤波三:时序数据预测(一维kalman滤波)

文章目录 原理kalman滤波一&#xff1a;基础理论kalman滤波二&#xff1a;二维目标跟踪 一维kalman滤波状态变量测量值状态转移矩阵 示例代码&#xff1a;运行结果&#xff1a;真实场景示例 以下是一个测距的应用&#xff0c;在图像上计算目标离参考点的距离&#xff0c;测距的…

如何删除链表的中间节点和a/b处的节点?

文章目录 删除中间节点删除 a/b 处的节点 示例定义链表节点结构删除中间节点删除 a/b 处的节点 注意事项 Python 实现案例创建链表删除中间节点删除 a/b 处的节点测试代码示例代码完整版测试输出 在链表中删除中间节点或者特定位置&#xff08;如 a/b 处&#xff09;的节点涉及…

学习干货HVV必学远控工具及Webshell流量合集分析(建议收藏+附面试题)

0x01 前言 本篇文章为各位师傅总结了一些当下流行的Webshell远程工具及其中的流量分析&#xff0c;方便在平时监测、hvv、攻防演练中进行及时发现、阻拦回溯等、在某些比赛上可能也会有类似的流量分析题目&#xff0c;根据工具的一些流量特征进行说明&#xff0c;其中会附带一…

如何融合文本信息提高时序预训练模型?

今天小编给大家介绍两篇联合文本和时序数据进行预训练的文章。 UniTime: A Language-Empowered Unified Model for Cross-Domain Time Series Forecasting 文献地址&#xff1a;https://arxiv.org/pdf/2310.09751.pdf 代码地址&#xff1a;https://github.com/liuxu77/UniTim…

国产 AI 大模型成果展示,囊括 12 大金融应用场景!

前言 随着人工智能技术的飞速发展&#xff0c;国产AI大模型在医疗健康领域的应用日益广泛&#xff0c;正在逐步改变传统的医疗服务模式&#xff0c;提升医疗服务的质量和效率。以下是对国产AI大模型在医疗领域应用的典型案例盘点&#xff0c;覆盖了十大医疗应用场景。 01 智…

治愈系视频素材哪里找?非常优秀的治愈系素材分享

在快节奏的现代生活中&#xff0c;寻找心灵的慰藉成为了一个日益重要的话题。治愈系视频以其温暖人心的内容和独特的魅力&#xff0c;为观众提供了一种减压和放松的方式。要制作出触动人心的治愈系视频&#xff0c;首先需要挑选合适的视频素材。以下是几个优质的治愈系视频素材…

使用build_chain.sh离线搭建匹配的区块链,并通过命令配置各群组节点的MySQL数据库

【任务】 登陆Linux服务器&#xff0c;以MySQL分布式存储方式安装并部署如图所示的三群组、四机构、 七节点的星形组网拓扑区块链系统。其中&#xff0c;三群组名称分别为group1、group2和group3&#xff0c; 四个机构名称为agencyA、agencyB、agencyC、agencyD。p2p_port、cha…

粗绿激光模组使用优势有哪些

在当今高科技飞速发展的时代&#xff0c;激光技术以其精准、高效、稳定的特性&#xff0c;在众多领域中展现出了非凡的应用价值。其中&#xff0c;粗绿激光模组作为激光技术的重要分支&#xff0c;凭借其独特优势&#xff0c;在众多行业中脱颖而出&#xff0c;成为推动产业升级…

格密码(一)

什么是格&#xff1f; 可以简单地把“格”想象成一个用多个点组成的网格&#xff0c;这个网格可以存在于二维、三维甚至更高维的空间中。每个格点都是由一组基向量&#xff08;比如二维空间中的两个基向量&#xff09;通过整数倍的线性组合得到的。 二维格的例子&#xff1a;…

大坝可视化监控:实时安全保障

利用图扑可视化技术实时监控大坝结构和运行状态&#xff0c;及时识别潜在风险&#xff0c;提升管理效率&#xff0c;确保大坝安全稳定运行和资源的高效利用。

实时数据的处理一致性

实时数据一致性的定义以及面临的挑战‍‍‍‍‍ 数据一致性通常指的是数据在整个系统或多个系统中保持准确、可靠和同步的状态。在实时数据处理中&#xff0c;一致性包括但不限于数据的准确性、完整性、时效性和顺序性。 下图是典型的实时/流式数据处理的流程&#xff1a; 1、…

基于单片机多点无线温度监控系统设计

本设计STC89C52RC单片机作为主控芯片&#xff0c;能够远程监控多个位置的温度变化。使用一个主机来接收和监控三个从机收集到的温度信息&#xff0c;利用DS18B20温度传感器采集温度信息&#xff0c;采用GL24S无线通讯模块将数据传输给主机进行接收&#xff0c;信息显示在主机连…

SM2无证书及隐式证书公钥机制签名和加密过程详解(一)

前面介绍SM2无证书及隐式证书公钥机制下用户公私密钥对的Python实现&#xff08;具体参看SM2隐式证书用户公私钥生成python代码实现_sm2 python 密钥生成-CSDN博客&#xff09;&#xff0c;可以看到需由用户和KGC&#xff08;可信密钥生成中心&#xff09;共同参与才能计算得到…

钢表面缺陷识别

钢表面缺陷识别是指通过计算机视觉技术对钢材表面缺陷进行检测和分类的过程。这一技术在钢铁制造行业具有重要的工业价值&#xff0c;旨在提高产品质量、降低生产损失以及提升生产效率。钢表面缺陷可能包括裂纹、凹坑、气泡等&#xff0c;这些瑕疵会影响产品的性能和安全性&…

Transformer动画讲解

**Transformer工作原理**** **一、**** ******GPT的核心是Transformer******** *GPT* &#xff1a; **GPT&#xff08;Generative Pre-trained Transformer&#xff09;**** ****是一种基于单向Transformer解码器的预训练语言模型&#xff0c;它通过在大规模语料库上的无监督…

数字人会被封杀?不!看国家政策打破谣言

数字人会被封&#xff1f; 数字人发展没有前景&#xff1f; 数字人直播何去何从&#xff1f; 是不是大家入局数字人&#xff0c;都在纠结数字人使用和前景的问题&#xff1f;首先&#xff0c;大家放心&#xff0c;数字人广泛使用已经是大势所趋。下面给大家分享最新政策&…

多模态大模型应用开发技术学习

前篇提到多模态模型应用是未来的应用方向&#xff0c;本篇就聊聊技术学习方面的内容。 应用场景 多模态大模型技术的应用场景非常广泛&#xff0c;涵盖了从日常生活到专业领域的各个方面。以下是一些主要的应用场景&#xff1a; 办公自动化&#xff1a;多模态大模型可以用于…

Java线程的创建与使用

线程的概念 线程是‌操作系统能够进行运算调度的最小单位&#xff0c;是进程中的实际运作单位‌。一个进程可以包含多个线程&#xff0c;每个线程是进程中一个单一顺序的控制流&#xff0c;并行执行不同的任务。 线程生命周期 线程的状态是指线程在执行过程中的不同阶段。以…