Shiny-R语言轻松开发交互式web应用
时间:2022-07-22
本文章向大家介绍Shiny-R语言轻松开发交互式web应用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Shiny简介
Shiny是RStudio公司开发的新包,有了它,可以用R语言轻松开发交互式web应用。
特性
- 只用几行代码就可以构建有用的web应用程序—不需要用JavaScript。
- Shiny应用程序会自动刷新计算结果,这与电子表格实时计算的效果类似。当用户修改输入时,输出值自动更新,而不需要在浏览器中手动刷新。
- Shiny用户界面可以用纯R语言构建,如果想更灵活,可以直接用HTML、CSS和JavaScript来写。
- 可以在任何R环境中运行(R命令行、Windows或Mac中的Rgui、ESS、StatET、RStudio等)
- 基于Twitter Bootstrap的默认UI主题很吸引人。
- 高度定制化的滑动条小工具(slider widget),内置了对动画的支持。
- 预先构建有输出小工具,用来展示图形、表格以及打印输出R对象。
- 采用websockets包,做到浏览器和R之间快速双向通信。
- 采用反应式(reactive)编程模型,摒弃了繁杂的 事件处理代码,这样你可以集中精力于真正关心的代码上。
- 开发和发布你自己的Shiny小工具,其他开发者也可以非常容易地将它加到自己的应用中
安装
Shiny可以从CRAN获取, 所以你可以用通常的方式来安装,在R的命令行里输入:
install.packages("shiny")
下面来用Shiny说hello吧!
Hello Shiny是个简单的应用程序,基于faithful 数据集画直方图。与常见的R语言做出的图不同,Hello shiny有一个可以调整bins(柱的个数)的滑条,用户可以滑动选择bins的数目,app图表会随即产生变化. 要运行这个例子,只需键入:
library(shiny)
runExample("01_hello")
Shiny应用程序分为两个部分:用户界面定义和服务端脚本。这两部分的源代码将在下面列出。
现在,就尝试运行一下例子程序,浏览一下源代码,可以获得对shiny的初始印象。也可以通过认真阅读注释来进一步了解。
用户界面是在源文件ui.R中定义的:
ui.R
library(shiny)
# Define UI for app that draws a histogram ----
ui <- fluidPage(
# App title ----
titlePanel("Hello Shiny!"),
# Sidebar layout with input and output definitions ----
sidebarLayout(
# Sidebar panel for inputs ----
sidebarPanel(
# Input: Slider for the number of bins ----
sliderInput(inputId = "bins",
label = "Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Main panel for displaying outputs ----
mainPanel(
# Output: Histogram ----
plotOutput(outputId = "distPlot")
)
)
)
下面列出了服务端的代码。从某种程度上说,它很简单——根据用户选择的bin的数目来将直方图画出来。
server.R
library(shiny)
# Define server logic required to draw a histogram ----
server <- function(input, output) {
# Histogram of the Old Faithful Geyser Data ----
# with requested number of bins
# This expression that generates a histogram is wrapped in a call
# to renderPlot to indicate that:
#
# 1. It is "reactive" and therefore should be automatically
# re-executed when inputs (input$bins) change
# 2. Its output type is a plot
output$distPlot <- renderPlot({
x <- faithful$waiting
bins <- seq(min(x), max(x), length.out = input$bins + 1)
hist(x, breaks = bins, col = "#75AADB", border = "white",
xlab = "Waiting time to next eruption (in mins)",
main = "Histogram of waiting times")
})
}
运行出来效果是这样的
你也可以将ui.R和server.R保存到同一个文件夹,然后改变工作路径到那个文件夹,运行
library(shiny)
runApp()
也可以得到上面一样的效果。
- Fiddler抓包7-post请求(json)
- Selenium2+python自动化56-unittest之断言(assert)
- 长文 | 手把手教你如何使用python进行数据分析(最好将文章代码自己码一遍)
- 回归与梯度下降法及实现原理
- 【宅男宅女们的福音】电影天堂最新电影爬取及搜索脚本
- 把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败 在python3中调用会成功,但是调用不能成功的解决方案
- numpy用法小结
- 凯撒密码加解密及破解实现原理
- linux bash Shell脚本经典 Fork炸弹演示及命令详解
- python易错盲点排查之+=与+的区别分析以及一些赋值运算踩过的坑
- Selenium2+python自动化57-捕获异常(NoSuchElementException)
- 你真的会用ABAP, Java和JavaScript里的constructor么?
- 【Python学习笔记之三】lambda表达式用法小结
- Selenium2+python自动化58-读取Excel数据(xlrd)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于数字雨特效的学习
- linux 之mysql——约束(constraint)详解
- NFS+NIS+Autofs 实现用户的集中化管理
- [docker]Tomcat安装及配置访问权限
- Nginx+Keepalived 保障HA高可用
- Hash一致性闭环算法 - ( 适用于Redis扩容、Nginx多级缓存 等等 )
- MySQl 事务测试
- 百万数据,SQL数据分流查询
- Linux 安装Apr - 提高Tomcat 的可伸缩性和性能
- Linux下MySQL的彻底卸载
- Excel生成导入SQL语句,快速创建批量 insert/update/delete
- MySQL 执行计划详解
- MySQL 5.7详细安装步骤
- win10必备效率预览神器-Quick look
- 史上最全-Nginx和Tengine安装部署