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="",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】,可以看到条形图

到此结束~
R基础学习(三)-- 简单练习(shiny+mysql+barplot)的更多相关文章
- R基础学习(一)-- 连接mysql数据库
		
测试环境:win10+RStudio (1)在Console加载两个插件 >install.packages('DBI') Installing package into ‘C:/Users/l ...
 - R基础学习
		
R基础学习 The Art of R Programming 1.seq 产生等差数列:seq(from,to,by) seq(from,to,length) for(i in 1:length(x) ...
 - Python入门基础学习 三
		
Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...
 - Python基础学习三
		
Python基础学习三 1.列表与元组 len()函数:可以获取列表的元素个数. append()函数:用于在列表的最后添加元素. sort()函数:用于排序元素 insert()函数:用于在指定位置 ...
 - Django基础学习三_路由系统
		
今天主要来学习一下Django的路由系统,视频中只学了一些皮毛,但是也做下总结,主要分为静态路由.动态路由.二级路由 一.先来看下静态路由 1.需要在project中的urls文件中做配置,然后将匹配 ...
 - Java基础学习笔记二十四  MySQL安装图解
		
.MYSQL的安装 1.打开下载的mysql安装文件mysql-5.5.27-win32.zip,双击解压缩,运行“setup.exe”. 2.选择安装类型,有“Typical(默认)”.“Compl ...
 - salesforce lightning零基础学习(三)  表达式的!(绑定表达式)与 #(非绑定表达式)
		
在salesforce的classic中,我们使用{!expresion}在前台页面展示信息,在lightning中,上一篇我们也提及了,如果展示attribute的值,可以使用{!v.expresi ...
 - JAVA多线程基础学习三:volatile关键字
		
Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字. volatile,从字面上说是易变的.不稳定的,事实上,也确实如此,这个 ...
 - Spring基础学习(三)—详解Bean(下)
		
一.Bean的生命周期 1.概述 Spring IOC容器可以管理Bean的生命周期,Spring 允许在Bean的生命周期的特定点执行定制的任务. Spring IOC容器对Be ...
 
随机推荐
- Tomcat get 中文乱码
			
乱码问题 原因: tomcat默认的在url传输时是用iso8859-1编码. 解决方案一: 在使用get传输参数时,将参数中的中文转换成url格式,也就是使用urlEncode和urlDecode来 ...
 - IntelliJ IDEA 破解 - pycharm
			
MAC激活方法 下载破解文件 下载地址: https://files.cnblogs.com/files/resn/JetbrainsCrack-2.7-release-str.jar.zip 或者去 ...
 - 第11月第8天 ffmpeg ffplay
			
static int ffplay_video_thread(void *arg) { FFPlayer *ffp = arg; VideoState *is = ffp->is; AVFram ...
 - 【ORACLE】创建表空间
			
CREATE TABLESPACE dna36 DATAFILE 'D:\oracle\oradata\orcl\dna36.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M ...
 - ASP.NET程序发布
			
详细流程请参考文章:https://www.cnblogs.com/wangjiming/p/6286045.html 主要补充个人操作过程中遇到的问题: 1)网站发布完成后,站点下没有aspnet_ ...
 - Vue's Demo
			
*.vue=<template> </template>+<style></style>+<script></script> s ...
 - python3之模板pycurl探测web服务质量
			
1.pycurl简介 pycURL是libcurl多协议文件传输库的python接口,与urllib模块类似,PycURL可用于从python程序中获取由URL标识的对象,功能很强大,libcurl速 ...
 - 【坐在马桶上看算法】算法7:Dijkstra最短路算法
			
上周我们介绍了神奇的只有五行的Floyd最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最短路”.本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径 ...
 - ftp配置文件
			
vsftpd配置文件采用“#”作为注释符,以“#”开头的行和空白行在解析时将被忽略,其余的行被视为配置命令行,每个配置命令的“=”两边不要留有空格.对于每个配置命令,在配置文件中还列出了相关的配置说明 ...
 - ubuntu16。04LST配置nfs实现服务器和客户端共享文件
			
NFS(network file system)网络文件系统可以实现不同主机与操作系统之间通过网络进行资源共享,此时一台PC充当服务器,若干台PC充当那客户端,具体如何配置请跟随我的步骤来做 1 下载 ...