R语言系列教程-----一起来学shiny吧(1)

news2024/11/26 5:32:35

什么是shiny?Shiny是一个R包,可让您轻松地直接从 R 构建交互式 Web 应用程序(应用程序)。本系列是个长教程,带你由浅入深学习shiny。
在这里插入图片描述
我们先使用系统自带的一个例子来介绍一下shiny,我们先导入shiny包

library(shiny)

我们来运行一个R包自带的模板看看什么是交互应用程序

runExample("01_hello")

在这里插入图片描述
弹出一个类似软件的界面,图形显示的是一个直方图,当我们拖动左边的圆点,直方图图形会随着你的拖动改变
在这里插入图片描述
这就是一个最简单的应用。这个APP由3个部分组成,
• 用户界面对象
• 服务器功能
• 调用shinyApp函数
下面我们来一一介绍怎么做成的。我们先来看一下它的整体代码

ui <- fluidPage(
  
  titlePanel("Hello Shiny!"),
  
  sidebarLayout(
    
    sidebarPanel(
      
      sliderInput(inputId = "bins",
                  label = "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)
      
    ),
    
    mainPanel(
      
      plotOutput(outputId = "distPlot")
      
    )
  )
)
server <- function(input, output) {
  
  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")
    
  })
  
}

shinyApp(ui, server)整体代码分成3部分,ui这部分是属于用户操作的部分,控制对象控制应用程序的布局和外观。Server控制计算机构建和R的操作代码部分。shinyApp函数负责对两部分连接。
我们先来看ui这个函数,ui是我们自己定义的,你定义成别的名字也是可以的

ui <- fluidPage(
  
  titlePanel("Hello Shiny!"),
  
  sidebarLayout(
    
    sidebarPanel(
      
      sliderInput(inputId = "bins",
                  label = "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)
      
    ),
    
    mainPanel(
      
      plotOutput(outputId = "distPlot")
      
    )
  )
)

titlePanel(“Hello Shiny!”)这句是给软件添加标题
在这里插入图片描述
sidebarLayout函数是进行输入和输出的界面布局,创建带有侧边栏(sidebarPanel())和主区域(mainPanel())的布局(sidebarSlayout()。
sidebarPanel函数创建左侧侧边栏,在sidebarPanel函数中sliderInput函数创建一个小的滑块value
定义初始值,min和max定义最小最大值,label定义滑块的名字,inputId = "bins"将定义访问值的输入内容,bins的内容会和server函数进行一个链接,mainPanel函数控制右侧的主面板输出,plotOutput将会进行图片输出,在输出内容中outputId = "distPlot"表示输出的内容定义为distPlot。distPlot内容会和server函数进行一个链接。
接下来就是server函数服务器功能部分

server <- function(input, output) {
  
  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")
    
  })
  
}

Server函数具有两个部分input, output代表输入和输出部分。自带的例子使用R内置的数据,所以本例子没有输入部分,只有输出部分。这里的bins对应着界面设置部分的sliderInput,hist函数为R的绘制直方图函数,hist函数内为一些基本设置。
界面部分和服务器部分都设置好以后,我们shinyApp函数把它们链接起来就可以了。

shinyApp(ui, server)

在这里插入图片描述
这样我们就制作成了一个app,我们把它保存起来,命名为app.R,下次直接点run app就可以启动了
在这里插入图片描述
建立好后我们也可以对代码进行局部修改,假设我们我们想把柱子改成红色的,边框改成橘色的

server <- function(input, output) {
  
  output$distPlot <- renderPlot({
    
    x    <- faithful$waiting
    bins <- seq(min(x), max(x), length.out = input$bins + 1)
    
    hist(x, breaks = bins, col = "red", border = "orange",
         xlab = "Waiting time to next eruption (in mins)",
         main = "Histogram of waiting times")
    
  })
  
}

保存后重新运行
在这里插入图片描述
已经变成红色的了,本期介绍了shiny的初步认识和简单应用,未完待续。

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

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

相关文章

RK3568开发笔记

一、了解MASKROM模式 出厂的时候&#xff0c;没有任何固件&#xff0c;但CPU有一块EPROM存储区&#xff0c;放有一个BOOTROM小启动程序。 这就是MASKROM模式。 使得首次烧写FLASH成为可能&#xff0c;不需要拆FLASH到烧录器上。 在MASKROM下&#xff0c;烧写UPDATE.IMG文件&…

Java实现碧蓝航线连续作战

目录一.实现功能二.主要思路三.代码实现四.用exe4j生成.exe程序五.最终效果六.代码开源一.实现功能 主线图作战结束到结算页自动点击再次前往 二.主要思路 判断是否进入了结算界面&#xff1a;记录结算界面某个像素点的RGB值&#xff0c;每隔3秒对这个像素点进行比对 移动鼠标…

浅入浅出keepalived+nginx实现高可用双机热备

对应用keepalivednginx技术实现nginx高可用进行简单的分析&#xff0c;下面是通过对keepalived添加校验nginx存活脚本&#xff0c;监控nginx的状态&#xff0c;应用keepalived的主备模式实现nginx的高可用。 假如192.168.100.2和192.168.100.3两台机器安装了nginx&#xff0c;负…

C++深入浅出(九)—— 多态

文章目录1. 多态的概念2. 多态的定义及实现&#x1f351; 多态的构成条件&#x1f351; 虚函数&#x1f351; 虚函数的重写&#x1f351; 虚函数重写的两个例外&#x1f351; C11的override 和 final&#x1f351; 重载、覆盖(重写)、隐藏(重定义)的对比3. 抽象类&#x1f351;…

微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第二步注入dll文件

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 上一篇文章我们提到过,微信中如何接入chatgpt机器人才比较安全(不会收到警告或者f号)之第一步登录微信,需要的大家可以点进去看。 文接上篇,本文主要介绍如果将机器人接入到微信中的方法之一,别的方法后面专…

如何快速了解项目源文件的构成?基于 Node.js 实现项目源代码数据统计工具

当希望了解一个项目的代码规模时&#xff0c;首先可能会想对项目源文件的数量、类型分布、代码行数等做一下数据统计。使用 Linux/git 命令可以满足简单的统计需求&#xff0c;使用流行的 cloc 工具可以实现详细的源代码分析数据。此外也可以使用 Node.js 编码简单的实现个性化…

1.7配置OSPF手动汇总

实验7:配置OSPF手动汇总 实验目的实现OSPF路由汇总的配置阐明OSPF引入的外部路由时进行路由汇总的方法实验拓扑配置OSPF手动汇总实验拓扑如图1-17所示。 图1-17 配置OSPF手动汇总 实验步骤配置IP地址,配置OSPF(和实验6一致,此处略)在…

我还是学生,需要做副业吗?致各位迷茫的学生们

大家好&#xff0c;我是蝶衣王的小编&#xff0c;今天跟大家聊一聊&#xff0c;学生党应该做副业吗本文仅支持成人学生党查看&#xff0c;如果您还是未成年人&#xff0c;请立即退出本文。如今你唯一要做的就是好好学习&#xff0c;不要想那么多关于金钱的事&#xff0c;等到你…

CMMI-立项管理流程

立项管理&#xff08;Project Initialization Management, PIM&#xff09;的目的是&#xff1a;&#xff08;1&#xff09;采纳符合机构最大利益的立项建议&#xff0c;通过立项管理使该建议成为正式的项目&#xff08;即合法化&#xff09;。&#xff08;2&#xff09;杜绝不…

2023年阿里云活动有哪些实例规格的云服务器?如何选择这些实例规格

2023年阿里云活动有哪些实例规格的云服务器&#xff1f;新手用户通过阿里云活动选购阿里云服务器的时候实例规格应该怎么选&#xff0c;因为同配置的云服务器往往有多种不同是规格的云服务器可供选择&#xff0c;而且不同实例规格的云服务器之间价格差别还比较大&#xff0c;因…

CPP2022-28-期末模拟测试01

6-1 实现一个计算三角形面积的简单函数&#xff08;假设输入的边长合理&#xff09;。 分数 10 全屏浏览题目 切换布局 作者 王和兴 单位 东北大学秦皇岛分校 实现一个计算三角形面积的简单函数&#xff08;假设输入的边长合理&#xff09;。 函数接口定义&#xff1a; do…

Seata-server 源码学习(一)

Seata源码学习引入 学习了Seata的应用以后&#xff0c;我们从这开始要开始分析Seata的源码相关内容 源码下载 官方地址&#xff1a;https://seata.io/zh-cn/blog/download.html 通过idea打开seata-1.4.2版本的源码 回顾AT模式 其实在之前的应用课程中&#xff0c;我们已经用…

Windows 离线安装 MySQL 8

目录 1. 下载离线安装包 2. 上传解压 3 配置 my.ini 文件 4 设置系统环境变量 5 安装 MySQL 6 登录 MySQL 客户环境是内网环境&#xff0c;不能访问外网&#xff0c;只能离线安装 MySQL 了。 1. 下载离线安装包 MySQL 离线压缩包官网下载地址&#xff1a;MySQL :: Down…

Java基础面试题——面向对象和集合专题

文章目录1. 面向对象和面向过程的区别2. 介绍下Java中的基本数据类型3. 标识符的命名规则4. instanceof关键字的作用5.重载和重写的区别6.介绍下内部类7.介绍下Java中的四种引用8.HashCode的作用9.有没有可能两个不相等的对象有相同的hashcode10.深拷贝和浅拷贝的区别是什么?1…

STM32单片机DS18B20测温程序源代码

OLED液晶屏电路接口DS18B20电路接口STM32单片机DS18B20测温程序源代码#include "sys.h"#define LED_RED PBout(12)#define LED_GREEN PBout(13)#define LED_YELLOW PBout(14)#define LED_BLUE PBout(15)#define DS18B20_IO_IN() {GPIOA->CRL&0XFFFFFFF0;GPIOA…

使用Arthas定位问题

功能概述 首先&#xff0c;Arthas的常用功能大概有以下几个&#xff1a; 解决依赖冲突 sc命令&#xff1a;模糊查看当前 JVM 中是否加载了包含关键字的类&#xff0c;以及获取其完全名称。 sc -d 关键字 注意使用 sc -d 命令&#xff0c;获取 classLoaderHash命令&#xff1a…

Java 快速判断一个 IP 是否在给定的网段内

目录方法一&#xff1a;借助于 Java 提供的 InetAddress方法二&#xff1a;撸个算法实现&#xff08;二进制计算&#xff09;其他数字转为子网掩码要在Java中判断一个IP地址是否在给定的网段内&#xff0c;可以使用子网掩码将IP地址和子网掩码进行与操作来提取网络地址&#xf…

计算机网络入门

一&#xff0c;计算机网络在信息时代中的作用 21世纪的一些重要特征就是数字化&#xff0c;网络化和信息化&#xff0c;它是一个以网络为核心的信息时代。有三类大家很熟悉的网络&#xff0c;即电信网络&#xff0c;有线电视网络和计算机网络。按照最初的服务分工&#xff0c;…

GB28181-2022注册注销基本要求、注册重定向解读和技术实现

规范解读GB28181-2022注册、注销基本要求相对GB28181-2016版本&#xff0c;做了一定的调整&#xff0c;新调整的部分如下&#xff1a;——更改了注册和注销基本要求&#xff08;见 9.1.1&#xff0c;2016 年版的 9.1.1&#xff09;。1.增加对NAT模式网络传输要求&#xff0c;宜…

Vulnhub 渗透练习(一)—— Breach 1.0

环境搭建 环境下载&#xff1a; https://www.vulnhub.com/entry/breach-1,152/ 环境描述&#xff1a; Vulnhub 中对此环境的描述&#xff1a; VM 配置有静态 IP 地址 (192.168.110.140)&#xff0c;因此您需要将仅主机适配器配置到该子网。 这里我用的是 VMware &#xff0…