R 中 DB 驱动的 R Shiny 应用程序可视化--从原理到实际代码

DB 기반 R 샤이니앱 시각화
(基于 DB 的 R ShinyApp 可视化图像)

当您分析数据并将其可视化时 必须始终反映最新数据举例来说。但每次更新 CSV 文件都很麻烦,而且每次运行代码时都要重新加载数据😫,效率也不高。

现在是使用数据库的好时机吗? 基于 DB R Shiny 应用程序可视化以高效地存储数据、 R Shiny 您可以将它们导入应用程序,将它们可视化! 🎉 。

今天 SQLite以使用 在 Shiny 应用程序中生成五年的数据、获取数据并将其可视化当然是一步一步来! 详细解释,包括实际代码我们会的,请和我们一起坚持到最后 😉 。

🔥 为什么使用 DB:为什么使用 DB 而不是 CSV?

将 CSV 与数据库(DB)进行比较后,两者的区别就很明显了。

比较CSV 文件数据库 (DB)
存储数据保存到文件保存为表格
更新数据手动修改文件使用 SQL 查询轻松修改
多用户访问难度是(使用 Shiny 网络应用程序)
速度速度慢(需要加载文件)快速(利用 SQL 查询)

从上面的对比可以看出、 在创建 Shiny 应用程序等动态网络应用时,利用数据库会更有效率。

🚀 [实践]在 R Shiny 应用程序中实现数据库驱动的可视化

1️⃣在 SQLite DB 中存储数据

首先是 随机生成 5 年(2020-2024 年)的销售数据并存储在 SQLite 中让我们编写一些代码来实现这一目标

# 软件包加载
库(DBI)
库(RSQLite)

连接到 # SQLite 数据库
conn <- dbConnect(RSQLite::SQLite(), "sales_data.sqlite")

生成 # 数据
set.seed(123)
年 <- rep(2020:2024, each = 12)
月 <- rep(1:12, times = 5)
sales <- sample(100:500, 60, replace = TRUE) + (years - 2020) * 20 # 按年份反映增长情况

sales_data <- data.frame(year = years, month = months, sales = sales)

# 删除并保存现有表格
dbExecute(conn, "DROP TABLE IF EXISTS sales")
dbWriteTable(conn, "sales", sales_data, overwrite = TRUE, row.names = FALSE)

断开 # DB 连接
dbDisconnect(conn)

📝 代码评注

  1. 连接 SQLite 数据库: dbConnect()创建并连接 DB 文件。
  2. 生成随机数据: 岁月, 个月, 销售额 创建数据,生成五年的数据。
  3. 保存到数据库删除现有表格后 dbWriteTable()来存储数据。
  4. 断开数据库连接: dbDisconnect()终止连接。

2️⃣在Shiny应用程序中获取和可视化数据库数据

现在 通过 Shiny 应用程序从 SQLite 提取数据,并使用 ggplot2 将其可视化让我们来看看这个过程 🔥

library(shiny)
类库(DBI)
library(RSQLite)
library(ggplot2)

定义 # 用户界面
ui <- fluidPage(
  titlePanel("📊 基于 DB 的 R ShinyApp 可视化")、
  侧边栏布局
    sidebarPanel(selectInput("year", "Select year:", choices = 2020:2024, selected = 2024))、
    mainPanel(plotOutput("salesPlot"))
  )
)

# 服务器逻辑
tserver <- function(input, output) {
  conn <- dbConnect(RSQLite::SQLite(), "sales_data.sqlite")
  
  sales_data_reactive <- reactive({
    query <- paste0("SELECT * FROM sales WHERE year = ", input$year)
    dbGetQuery(conn, query)
  })

  output$salesPlot <- renderPlot({
    df <- sales_data_reactive()
    ggplot(df, aes(x = 月份, y = 销售额)) +
      geom_line(color = "blue") +
      geom_point(color = "red") +
      geom_smooth(method = "lm", formula = y ~ poly(x, 2), color = "darkred", linetype = "dashed") +
      theme_minimal()
  })
  
  onStop(function() { dbDisconnect(conn) })
}

shinyApp(ui, server)

📝 代码评注

  1. 配置用户界面,允许用户选择年份 (selectInput() 使用)
  2. 连接 Shiny 服务器上的数据库,获取当年的数据
  3. 使用 ggplot2 进行可视化 (geom_line() + geom_smooth()添加趋势线)
( 基于 DB 的 R ShinyApp 可视化图像 - 选择个别年份 )

🔄 如何更新其他 DB 数据

要在不删除现有表的情况下向数据库添加新一年的数据,可以使用 通过添加数据进行更新例如,如果您编写了为 2025 年添加数据的代码,它将如下所示

conn <- dbConnect(RSQLite::SQLite(), "sales_data.sqlite")

创建 # 2025 数据
set.seed(125)
年 <- rep(2025, each = 12)
月 <- 1:12
销售额 <- sample(100:500, 12, replace = TRUE) + (2025 - 2020) * 20

new_data <- data.frame(year = years, month = months, sales = sales)

# 添加到现有表格
dbWriteTable(conn, "sales", new_data, append = TRUE, row.names = FALSE)

# 断开 DB
dbDisconnect(conn)

📝 代码评注

  1. 为新的一年生成数据: set.seed(125)并为 2025 年生成数据。
  2. 配置数据帧创建结构与之前相同的数据帧。
  3. 向数据库添加数据: dbWriteTable()append = TRUE将新数据添加到现有数据中。
  4. 断开数据库连接: dbDisconnect()终止连接。

现在,添加 2025 数据后,你可以在 Shiny 应用程序中通过添加 selectInput()您还可以添加 2025。📊

📌 最后...

现在我们有了 如何在 R Shiny 应用程序中将 DB 驱动的数据可视化ã''å'ç...§ã-ã¦ã ã-ã "ã€'

  • 了解为什么使用 DB 是个好主意
  • 学习用 SQLite 存储数据
  • 在 Shiny 应用程序中获取和可视化数据的过程 库克

在实际项目中,您不仅可以使用 SQLite,还可以使用 MySQL、PostgreSQL 和更多数据库例如😊

📚 词汇表

  • 闪亮该软件包可让您轻松使用 R 创建网络应用程序。
  • SQLite可作为单个文件管理的轻量级数据库,适用于简单的数据存储。
  • ggplot2:用于数据可视化的 R 软件包,可以创建各种图表。
  • 反应式():允许数据在 Shiny 中动态变化的函数。
테리 이모티콘
(快乐编码)

类似文章