📅  最后修改于: 2023-12-03 15:19:54.245000             🧑  作者: Mango
R语言拥有丰富的包,可以帮助程序员轻松实现各种复杂的数据分析和可视化任务。而其中一些包被称为闪亮包(shiny packages),因为它们可以帮助用户创建交互式Web应用程序,而这些应用程序可以在网站上进行部署,以方便用户与大众分享。这篇文章将介绍一些常用的R编程中的闪亮包。
shiny
shiny
包是制作Web应用程序和交互式Web界面的基础包。该包提供了许多内置的用户界面和输入组件,包括滑块、复选框、单选按钮、文本框等等。使用shiny
包,用户可以轻松地将自己的R代码转化为具有互动性的Web应用程序。下面的代码演示了如何使用shiny
包创建一个简单的Web应用程序,该应用程序可以绘制正弦曲线。
library(shiny)
ui <- fluidPage(
titlePanel("绘制正弦曲线"),
sidebarLayout(
sidebarPanel(
sliderInput("n",
label = "数据点个数:",
value = 50,
min = 10,
max = 100)
),
mainPanel(
plotOutput("sine")
)
)
)
server <- function(input, output) {
output$sine <- renderPlot({
x <- seq(-pi, pi, length.out = input$n)
y <- sin(x)
plot(x, y, type = "l")
})
}
shinyApp(ui = ui, server = server)
上面的代码中,ui
对象定义了应用程序的用户界面,包括一个标题栏,一个侧边栏,以及一个用于绘制正弦曲线的图形区域。server
函数则定义了应用程序的功能代码,其中使用了input$n
来读取滑块组件的当前值,并绘制了一条正弦曲线。
plotly
plotly
包是一个高级的数据可视化包,可以绘制各种类型的图形,包括散点图、折线图、饼图等等。plotly
包提供了一种简单的方式来创建交互式图形,使得用户可以直接在图形中进行缩放、平移、旋转等操作。下面的代码演示了如何使用plotly
包创建一个简单的散点图,并将其转换为交互式图形。
library(plotly)
data <- data.frame(x = rnorm(100), y = rnorm(100))
plot_ly(data, x = ~x, y = ~y, type = "scatter", mode = "markers")
在上面的代码中,data
对象是一个包含随机数据的数据框。plot_ly
函数用于创建一个散点图,并利用~
运算符来指定数据框中的列作为x
和y
轴的数据。type
参数指定了绘图类型为散点图,而mode
参数指定了散点的样式为点标记。
leaflet
leaflet
包是一个非常强大的地图可视化包,可以创建各种类型的交互式地图,包括热力图、轮廓线地图、标记地图等等。leaflet
包使用开源JavaScript库Leaflet来绘制地图,并提供了简单易用的R接口。下面的代码演示了如何使用leaflet
包创建一个简单的标记地图。
library(leaflet)
data <- data.frame(lat = c(37.7749, 37.7749), lon = c(-122.4194, -122.4088))
leaflet(data) %>%
addTiles() %>%
addMarkers(lng = ~lon, lat = ~lat)
在上面的代码中,data
对象是一个包含两个地点信息的数据框。leaflet
函数用于创建一个地图对象,并使用addTiles
函数来添加瓷砖地图图层。addMarkers
函数则用于添加标记,其中lng
和lat
参数用于指定标记的经纬度坐标。
shinydashboard
shinydashboard
包是为shiny
应用程序提供简洁、漂亮和实用的仪表板界面的包。该包提供了许多高质量的UI组件,包括数据表格、进度条、通知区域等等。下面的代码演示了如何使用shinydashboard
包创建一个简单的仪表板应用程序,该应用程序可用于显示美国三大指数(stock indices)变化。
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "美国三大指数"),
dashboardSidebar(
sliderInput("days",
label = "历史天数:",
value = 30,
min = 1,
max = 90)
),
dashboardBody(
fluidRow(
box(
title = "标准普尔500指数",
solidHeader = TRUE,
status = "primary",
height = "300px",
plotOutput("spx")
),
box(
title = "道琼斯工业平均指数",
solidHeader = TRUE,
status = "warning",
height = "300px",
plotOutput("djia")
),
box(
title = "纳斯达克指数",
solidHeader = TRUE,
status = "success",
height = "300px",
plotOutput("ixic")
)
)
)
)
server <- function(input, output) {
output$spx <- renderPlot({
# 获取标准普尔500指数历史数据
spx <- getSymbols("^GSPC", src = "yahoo", auto.assign = FALSE)
spx_subset <- tail(spx, input$days)
# 绘制标准普尔500指数折线图
plot(Cl(spx_subset), type = "l", main = "标准普尔500指数历史数据")
})
output$djia <- renderPlot({
# 获取道琼斯工业平均指数历史数据
djia <- getSymbols("^DJI", src = "yahoo", auto.assign = FALSE)
djia_subset <- tail(djia, input$days)
# 绘制道琼斯工业平均指数折线图
plot(Cl(djia_subset), type = "l", main = "道琼斯工业平均指数历史数据")
})
output$ixic <- renderPlot({
# 获取纳斯达克指数历史数据
ixic <- getSymbols("^IXIC", src = "yahoo", auto.assign = FALSE)
ixic_subset <- tail(ixic, input$days)
# 绘制纳斯达克指数折线图
plot(Cl(ixic_subset), type = "l", main = "纳斯达克指数历史数据")
})
}
shinyApp(ui = ui, server = server)
上面的代码中,ui
对象定义了应用程序的仪表板界面,包括一个标题栏、一个侧边栏、以及用于显示三个指数的框。server
函数则定义了应用程序的功能代码,可以使用getSymbols
函数获取Yahoo Finance上的历史股票数据,并绘制相应的折线图。
以上介绍了一些在R编程中常用的闪亮包。这些包使得数据分析和可视化更加方便和高效。如果你想要在你的R项目中添加Web应用程序、交互式图形或仪表板等互动元素,那么这些闪亮包一定会是你的得力工具。