R基础学习(三)-- 简单练习(shiny+mysql+barplot)

测试环境:win10+RStudio

提前准备:

install.packages(‘shiny‘)

install.packages(‘RMySQL‘)

数据表准备:

最终实现的界面效果如下:点击【Click Me】按钮,从数据库读出数据,并在界面画出条形图

正式开始!

在R项目(比如ShinyDemo)的目录下新建一个文件夹barplotDemo

然后在这个目录下新建两个文件,ui.R和server.R

ui.R的代码实现如下

library(shiny)

# Use a fluid Bootstrap layout
fluidPage(
  # Give the page a title
  titlePanel("A Simple Shiny Demo"),

  # Generate a row with a sidebar
  sidebarLayout(
    # Define the sidebar with one input
    sidebarPanel(
      actionButton("do", "Click Me")
    ),

    # Create a spot for the barplot
    mainPanel(
      plotOutput("dataPlot")
    )
 )
)

server.R的代码如下:

library(RMySQL)

# Define a server for the Shiny app
function(input, output) {
  observeEvent(input$do, {   # connect the database
    conn <- dbConnect(MySQL(), dbname = "test", username="root", password="123456",client.flag=CLIENT_MULTI_STATEMENTS)
    users = dbGetQuery(conn, "SELECT * FROM tb_user")
    dbDisconnect(conn)
    output$dataPlot <- renderPlot({
      vAge<-as.vector(unlist(users[3]))
      vName<-as.vector(unlist(users[2]))
      height<-vAge
      names(height)<-vName
      barplot(height)
    })
  })
}

备注:

(1)observeEvent(input$do, { }) 是按钮监听处理

(2)barplot的【height】要么是向量要么是矩阵,而users是list,所以需要进行处理,可以在Console查看数据类型

> is.vector(users)
[1] FALSE
> is.array(users)
[1] FALSE
> mode(users)
[1] "list"
> vAge<-as.vector(unlist(users[3]))
> mode(vAge)
[1] "numeric"
> vAge
[1] 20 26 29 49 39 53 48
> vName<-as.vector(unlist(users[2]))
> mode(vName)
[1] "character"
> vName
[1] "Tom"   "Jack"  "Mary"  "Merry" "Jerry" "Jucy"  "Lucy" 

上面两个R文件写好代码之后,在Console执行,记得在文件夹名字两侧加引号

> runApp(‘barplotDemo‘)

运行成功后,可以看到效果如下:

点击【Click Me】,可以看到条形图

到此结束~

原文地址:https://www.cnblogs.com/lmei/p/10177019.html

时间: 2024-10-11 08:56:49

R基础学习(三)-- 简单练习(shiny+mysql+barplot)的相关文章

Python入门基础学习 三

Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形,true就相当于1,false相当于0,可以用来计算 类型转换 转换:整数:int();字符串:str();浮点数:float() 转换例子:(图9) 如果用内置函数当变量名,比如str=123,一旦被赋值,再使用这个函数会被报错. type()函数可以明确告诉我们变量类型. isinstance

Dango基础学习三

今天主要来学习一下Django的路由系统,视频中只学了一些皮毛,但是也做下总结,主要分为<静态路由>.<动态路由>.<二级路由> 一.先来看下静态路由 1.需要在project中的urls文件中做配置,然后将匹配到的urls转发到对应app的views的函数中 2.在对应的app的views中配置相应的函数 3.这个时候我们通过浏览器访问这个url,就可以得到如下的结果 ok.至此,静态路由我们就学习完了,下面我们开始学习动态路由 二.动态路由的学习,动态路由的学习主要

R基础学习(1):R概述

R是一个有着统计分析功能及强大作图功能的软件系统,是由Ross Ihaka和Robert Gentleman共同创立.它是属于GNU系统的一个自由.免费.源代码开放的软件,同时也是一个用于统计计算和统计制图的优秀工具. 一.R的发展历史 要说R,就不得不先来说一下S语言.1980年左右,AT&T贝尔实验室设计出一种在统计领域广泛使用的S语言.S语言是一种解释型语言,被设计用来进行数据探索.统计分析和作图. S语言最初的实现版本主要是S-PLUS,它是一个基于S语言的商业软件,由MathSoft公

Java基础学习笔记二十四 MySQL安装图解

.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Complete(完全)”.“Custom(用户自定义)”三个选项,选择“Custom”,按“next”键继续. 3.点选“Browse”,手动指定安装目录. 4.填上安装目录,我的是“F:\Server\MySQL\MySQL Server 5.0”,也建议不要放在与操作系统同一分区,这样可以防止系统备份还

salesforce lightning零基础学习(三) 表达式的!(绑定表达式)与 #(非绑定表达式)

在salesforce的classic中,我们使用{!expresion}在前台页面展示信息,在lightning中,上一篇我们也提及了,如果展示attribute的值,可以使用{!v.expresion}展示信息. lightning在component中解析动态值的时候,会将{!} 这个里面的变量进行动态的解析以及展示.当然这个变量可以是基础类型,自定义类型,数组集合等等,当然如果表达式为空字符串或者是空格则不会解析.偶尔特殊的要求为需要输出'{!}'这个字符串,官方文档说可以使用<aura

JAVA多线程基础学习三:volatile关键字

Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字. volatile,从字面上说是易变的.不稳定的,事实上,也确实如此,这个关键字的作用就是告诉编译器,只要是被此关键字修饰的变量都是易变的.不稳定的.那为什么是易变的呢?因为volatile所修饰的变量是直接存在于主内存中的,线程对变量的操作也是直接反映在主内存中,所以说其是易变的. 一.Java内存模型 Java内存模型规定所有的变量都是存在主存当中(类似于前面说的物理

docker基础学习三

一.Dockerfile学习 由一系列的参数和命令构成的脚本.这些命令应用于基础镜像并最终创建一个新的镜像.基础镜像就是操作系统级别的镜像. 常用命令 FROM image_name:tag 定义了使用哪个基础镜像启动构建流程 MAINTAINER user_name 声明镜像的创建者 ENV key value 设置环境变量 (可以写多条) RUN command 是Dockerfile的核心部分(可以写多条) ADD source_dir/file dest_dir/file 将宿主机的文件

JDBC基础学习(三)&mdash;处理BLOB类型数据

一.BLOB类型介绍      在MySQL中,BLOB是一个二进制的大型对象,可以存储大量数据的容器,它能容纳不同大小的数据.      在MySQL中有四种BLOB类型.          实际使用中根据需要存入的数据大小定义不同的BLOB类型.需要注意的是,如果存储的文件过大,数据库的性能会下降.   二.Java数据类型与MySQL类型对照表      对于blob,一般用于对图片的数据库存储,原理是把图片打成二进制,然后进行的一种存储方式,在java中对应byte[]数组.      

R的学习(三)

一.均值 1.均值:mean(X)#计算所有元素的均值,包括矩阵.向量 2.行均值:apply(x,1,mean) 3.行均值:apply(x,2,mean) 注:如果x是数据框,则返回的就是向量 ex:mean(as.data.frame(x)) 在做多元数据分析时,多元数据输入最好使用数据框的方式输入 4.在计算中某些数据是异常的,参数trim可以减少输入误差对计算的影响 ex:w.mean<-mean(w,trim=0.1) 0.1表示计算均值前需要去掉异常值的比例 5.有缺失值的时候无法