学R,用 Shiny 包打造基于鸢尾花数据集的交互式数据可视化应用

下面内容摘录自《用R探索医药数据科学》专栏文章的部分内容。

1)栏目后续章节的文章将深入概括R语言在临床研究和新药创新领域的应用,填补了国内R教材中尚未广泛覆盖的部分内容。

2)专栏每篇文章都在 5000 字以上,质量平均分高达 94 分。已发表章节也会增加新的文章,已发表的文章也会更新版本,可留意专栏内容和题目信息。

3)由于每结束一个章节,专栏的优惠力度就会减小,当下正是订阅的最佳优惠时段,诚邀各位积极订阅!看全文请点击下面链接。

1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演示(更新20240814)-CSDN博客文章浏览阅读243次。使用R语言,数据科学家和分析师不仅可以快速创建原型,还可以开发全功能的应用程序,供同事、客户或公众使用。这种能力为数据分析和可视化带来了全新的可能性。https://blog.csdn.net/2301_79425796/article/details/141187347?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22141187347%22%2C%22source%22%3A%222301_79425796%22%7D

欢迎订阅我们专栏

.......前面部分请点击上面链接看原文(原文6991字)

一、数据可视化(Data Visualization)

......

二、运用 Shiny 包打造基于鸢尾花数据集的交互式数据可视化应用

 在数据科学中,数据的探索和可视化是分析的重要组成部分。R 语言提供了强大的工具来进行数据分析和可视化,其中 Shiny 包允许我们构建交互式的 Web 应用,使用户可以动态地探索数据。本文将详细介绍如何使用 Shiny 构建一个交互式的散点图应用,该应用允许用户选择鸢尾花数据集的不同变量进行可视化,并通过多种选项自定义图形。

1、准备工作

在开始之前,请确保你已经安装了以下 R 包:

  • shiny: 用于构建交互式 Web 应用的核心包。
  • bslib: 提供主题支持,允许我们定制 Shiny 应用的外观。
  • dplyr: 一个用于数据操作的 R 包,使数据过滤和选择更加简洁和高效。
  • ggplot2: R 中最流行的数据可视化包,用于创建优美且灵活的图形。
  • ggExtra: 用于在 ggplot2 图形上添加额外信息,如边际图。

可以通过运行以下命令来安装这些包:

install.packages(c("shiny", "bslib", "dplyr", "ggplot2", "ggExtra"))

2、鸢尾花数据集

鸢尾花数据集(iris)是数据科学中常用的经典数据集之一。该数据集包含 150 条记录,每条记录代表一朵鸢尾花的测量数据。数据集包括四个数值变量(萼片长度、萼片宽度、花瓣长度和花瓣宽度)和一个分类变量(物种)。

3、构建 Shiny 应用

我们将分两个部分来构建这个应用:用户界面(UI)和服务器端逻辑(Server)。用户界面定义了应用的外观及交互元素,而服务器端逻辑则处理用户的输入并生成相应的输出。

加载展包和筛选数值型列

# 加载必要的R包
library(shiny)   # 用于构建交互式Web应用
library(bslib)   # 用于主题定制的包
library(dplyr)   # 数据操作包
library(ggplot2) # 数据可视化包
library(ggExtra) # 用于在ggplot2图形中添加边际图的包

# 加载鸢尾花数据集
df <- iris

# 筛选出适合散点图的数值型列
df_num <- df |> select(where(is.numeric))

例如,如果鸢尾花数据集中包含列 Sepal.LengthSepal.WidthPetal.LengthPetal.Width 和 Species,其中前四列是数值型,那么 df_num 将只包含前四列。

4、定义用户界面

在 Shiny 应用中,用户界面(UI)定义了应用的布局和用户交互组件。我们将使用 page_sidebar 函数来创建一个带有侧边栏的页面布局。

# 定义用户界面
ui <- page_sidebar(
 sidebar = sidebar(
  # 下拉菜单让用户选择X轴变量
  varSelectInput("xvar", "X 变量", df_num, selected = "Sepal.Length"),
  # 下拉菜单让用户选择Y轴变量
  varSelectInput("yvar", "Y 变量", df_num, selected = "Sepal.Width"),
  # 复选框组允许用户根据物种进行筛选
  checkboxGroupInput(
   "species", "按物种筛选",
   choices = unique(df$Species), 
   selected = unique(df$Species)
  ),
  hr(), # 添加水平分隔线
  # 复选框允许用户选择是否按物种显示
  checkboxInput("by_species", "显示物种", TRUE),
  # 复选框允许用户选择是否显示边际图
  checkboxInput("show_margins", "显示边际图", TRUE),
  # 复选框允许用户选择是否添加平滑曲线
  checkboxInput("smooth", "添加平滑曲线")
 ),
 # 输出散点图
 plotOutput("scatter")
)
  • varSelectInput: 允许用户从鸢尾花数据集的数值变量中选择 X 轴和 Y 轴的变量。
  • checkboxGroupInput: 允许用户根据物种筛选数据。
  • hr: 插入一条水平分隔线,以分隔不同的输入控件。
  • checkboxInput: 复选框,用于控制是否显示物种、是否添加边际图,以及是否在散点图中添加平滑曲线。
  • plotOutput: 用于在页面上展示由 ggplot2 生成的图形。

欢迎订阅我们专栏,深度系统地学习R语言。 

为帮助大家更出色地掌握临床统计、数据挖掘以及人工智能建模的入门知识和应用,由于众多同学在计算机编程上经验欠缺,特此开设《用R 探索医药数据科学》专栏。该专栏每周至少会定期更新三篇,直到整个专栏更新完成。每篇文章都在 5000 字以上,质量平均分高达 94 分。还要提醒大家的是,每结束一个章节,专栏的优惠力度就会减小,当下正是订阅的最佳优惠时段,诚邀各位积极订阅!

专栏《用R 探索医药数据科学》链接:https://blog.csdn.net/2301_79425796/category_12729892.html?spm=1001.2014.3001.5482

​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据科学和人工智能兴趣组

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值