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

当您分析数据并将其可视化时 必须始终反映最新数据举例来说。但每次更新 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)
📝 代码评注
- 连接 SQLite 数据库:
dbConnect()创建并连接 DB 文件。 - 生成随机数据:
岁月,个月,销售额创建数据,生成五年的数据。 - 保存到数据库删除现有表格后
dbWriteTable()来存储数据。 - 断开数据库连接:
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)
📝 代码评注
- 配置用户界面,允许用户选择年份 (
selectInput()使用) - 连接 Shiny 服务器上的数据库,获取当年的数据
- 使用 ggplot2 进行可视化 (
geom_line()+geom_smooth()添加趋势线)

🔄 如何更新其他 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)📝 代码评注
- 为新的一年生成数据:
set.seed(125)并为 2025 年生成数据。 - 配置数据帧创建结构与之前相同的数据帧。
- 向数据库添加数据:
dbWriteTable()至append = TRUE将新数据添加到现有数据中。 - 断开数据库连接:
dbDisconnect()终止连接。
现在,添加 2025 数据后,你可以在 Shiny 应用程序中通过添加 selectInput()您还可以添加 2025。📊
📌 最后...
现在我们有了 如何在 R Shiny 应用程序中将 DB 驱动的数据可视化ã''å'ç...§ã-ã¦ã ã-ã "ã€'
- 了解为什么使用 DB 是个好主意
- 学习用 SQLite 存储数据
- 在 Shiny 应用程序中获取和可视化数据的过程 库克
在实际项目中,您不仅可以使用 SQLite,还可以使用 MySQL、PostgreSQL 和更多数据库例如😊
📚 词汇表
- 闪亮该软件包可让您轻松使用 R 创建网络应用程序。
- SQLite可作为单个文件管理的轻量级数据库,适用于简单的数据存储。
- ggplot2:用于数据可视化的 R 软件包,可以创建各种图表。
- 反应式():允许数据在 Shiny 中动态变化的函数。





