...----------------------------------------------------=
背景:
想要做交互可视化工具,想要开发成优雅的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 官方教程中文版
领取专属 10元无门槛券
私享最新 技术干货