交互网页应用 不会web框架?我选择R-shiny包(一)

...----------------------------------------------------=

背景:

想要做交互可视化工具,想要开发成优雅的web框架,

我可是一个入门的数据分析小白啊!fuck,,,

那么问题来了,我还要学web开发??.

答案是并不要,也不要998,只要花点时间,学习下R的shiny包,so easy!

...--------------------------------------------------

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对象。

...---------------------------------------------------

shiny构成:

UI & Server

•Shiny应用包含连个基本的组成部分:一个是用户界面脚本,另一个是服务器脚本。

•用户界面(ui)脚本控制应用的布局与外表。

•服务器(server)脚本包含构建应用所需要的一些重要指示

...---------------------------------------------------

Double运行方式:

一、你可以在一个目录中保存一个ui.R文件和server.R文件来创建一个

Shiny应用。每一个应用都需要自己独特的存放位置。你的应用目录名称为myapp,运行方法如下:

•library(shiny)

•runApp("F:/myapp")

二、也可以将ui和server代码写在一个脚本内,通过shinyApp执行该app。

运行以下脚本将得到一个简单的web版直方图。

本次采用的是第二种详见下面代码。

...---------------------------------------------------

Let's GO!!

为了小伙伴能快速运用shiny包,我选择了我们最常见的iris数据集:

首先构建ui端:

ui

#设置抬头

headerPanel("鸢尾花 K-means 聚类APP"),

#左边框

sidebarPanel(

#设置x轴

selectInput("xcol", label = "x 轴", width = '80%',

choices = names(iris[,1:4])),

#设置y轴 默认:第三列名字

selectInput("ycol", label ="y 轴", width = '80%',

choices = names(iris[,1:4]), selected = names(iris[,3])),

#设置聚类个数

numericInput("clusters", label = "聚类分组", value = 3, min = 1, max = 10,

width = '80%'),

#设置条形框长度

width = 4

),

mainPanel(

column(6,plotOutput("iris_k_mean")),

column(6, DT::dataTableOutput("table"))

)

))

首先我们可以看一下kmeans聚类的方法其次再用shiny构建

x

plot(iris$Sepal.Length,iris$Sepal.Width,col = x$cluster, pch =18)

points(x$centers, col = 1:x$centers, pch = 4, cex =4, lwd = 2 )

开始构建server端:

server

selectedData

iris[,c(input$xcol, input$ycol)]

})

#构建kmeans聚类函数

cluster

kmeans(iris[,1:4], input$clusters)

})

output$iris_k_mean

par(mar=c(5.1,4.1,0,1))

#作图

plot(selectedData(),

col = cluster()$cluster,

pch = 20, cex = 3)

points(cluster()$centers,

col=1:input$clusters,

pch=4,cex=4,lwd=4),

#建立数据框

output$table

DT::datatable(selectedData())

})

} )

以上是最近研究所得,待山花烂漫时,我再二更。。

...---------------------------------------------------------

作者简介

杨冰羽

电子商务数据专员,R语言爱好者

...--------------------------------------------------------

参考书籍:

用R构建shiny程序:http://yanping.me/shiny-tutorial/

百度:shiny 官方教程中文版

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180209G0T18G00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券