ggplot2的扩展,动态图的gganimate

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

2章4节:用RStudio做项目管理,静态图和动态图的演示,感受ggplot2的魅力-CSDN博客

RStudio作为R语言的集成开发环境,因其强大的功能和易用性,成为数据科学家、统计学家和分析师的首选工具之一。除了用于编写和运行代码,RStudio还提供了强大的项目管理功能,帮助用户有效地组织和管理数据分析项目。本篇文章将详细介绍如何用RStudio进行项目管理,包括项目的创建与结构、文件管理、版本控制、协作工具和自动化工作流程。

1、RStudio的项目创建

2、RStudio项目的推荐命名法

 二、RStudio中ggplot2的绘图

R语言有多个绘图系统,而ggplot2是其中最强大且最受欢迎的扩展包之一。ggplot2基于“语法图形”的理念,使得用户能够轻松地创建优雅而复杂的图表。通过ggplot2,您可以用简洁的代码生成高质量的可视化图表,帮助分析和展示数据。

1、安装和加载ggplot2

2、使用ggplot2创建图表

 在数据科学领域,数据可视化是一种强大的工具,它不仅能够帮助我们理解数据,还能让我们更有效地传达信息。传统的静态图表在许多情况下已经足够好用,但在处理时间序列数据或需要展示变化趋势时,动态图则更为直观和生动。gganimate是R语言中的一个包,它扩展了ggplot2的功能,使我们能够轻松创建各种类型的动态图。

特点动态图静态图
展示方式展示数据随时间或状态的变化过程仅展示数据的单一状态或快照
互动性动画可以增加互动性,用户可以暂停、回放等无互动性,用户只能观察图表的固定内容
信息传达更适合展示变化趋势、过程或时间序列数据更适合展示固定信息和数据的全貌
可视化复杂性可以展示多维数据或复杂变化,易于理解动态关系在展示复杂变化和多维数据时可能不够直观
制作难度通常制作难度较高,需要考虑动画效果制作相对简单,通常只需绘制一次
文件格式通常导出为GIF、MP4等格式通常导出为PNG、JPEG、PDF等静态格式
文件大小动态图由于多帧的原因,文件大小通常较大文件较小,适合用于打印和静态展示
观众体验提供更丰富的视觉体验,能够引导观众关注变化观众体验较为单一,但更适合快速浏览
适用场景适用于演示、报告或需要展示变化趋势的情境适用于出版物、报告和不需变化展示的情境

下面的代码中,我们先导入了必要的R包:ggplot2用于创建基本的图形,gganimate用于将静态图形转换为动画,gapminder提供了示例数据集,而ggrepel用于优化标签的显示。

另外,演示的这一份数据来自于gapminder包,包含了各国在不同年份的人均GDP、寿命预期、人口和所属大洲等信息。

# 安装必要的包
install.packages("ggplot2")
install.packages("gganimate")
install.packages("gapminder")
install.packages("gifski")
install.packages("ggrepel")

# 加载包
library(ggplot2)
library(gganimate)
library(gapminder)
library(ggrepel)

# 使用gapminder数据集
data <- gapminder

然后,我们通过ggplot2ggplot函数构建了一个基础的散点图。在这个图中,x轴表示人均GDP(对数尺度),y轴表示寿命预期,点的大小反映了国家的人口大小,点的颜色表示不同的大陆。

为了增强图形的表现力,我们使用了geom_point来绘制散点图,并通过geom_smooth添加了每个大陆的平滑曲线。

这些平滑曲线使用LOESS回归方法绘制,帮助我们观察各大陆的趋势变化。geom_text_repel则用于在图中添加国家名称的标签,标签的显示经过优化,避免了重叠和遮挡,使得每个国家的名称都能清晰地展示出来。



# 创建散点图,展示各个国家的人均GDP与人均寿命的关系,按年份分组
p <- ggplot(data, aes(x = gdpPercap, y = lifeExp, size = pop, color = continent, label = country)) +
  geom_point(alpha = 0.7, show.legend = FALSE) +  # 绘制散点图
  geom_smooth(aes(group = continent), method = "loess", se = FALSE, linetype = "dashed", size = 1) +  # 添加平滑曲线
  geom_text_repel(aes(group = year), size = 3, show.legend = FALSE) +  # 添加国家名称标签
  scale_x_log10() +  # 使用对数坐标轴
  scale_color_manual(values = c("Asia" = "#FF5733", "Europe" = "#33FF57", "Africa" = "#3357FF", 
                                "Americas" = "#F3FF33", "Oceania" = "#FF33A1")) +  # 自定义颜色
  scale_size(range = c(2, 12)) +  # 自定义大小范围
  labs(title = 'Year: {frame_time}', x = 'GDP per capita (log scale)', y = 'Life Expectancy',
       caption = 'Source: Gapminder') +
  theme_minimal() +  # 使用简约主题
  theme(plot.title = element_text(size = 22, face = "bold", hjust = 0.5),
        axis.title = element_text(size = 16),
        axis.text = element_text(size = 12))


 其次,动画的制作通过gganimatetransition_time函数实现,这个函数使得图形随年份变化而动态更新。为了使动画效果更加平滑,我们使用了ease_aes('cubic-in-out')来控制过渡效果的平滑程度。

此外,为了使点和标签的出现和消失更具视觉冲击力,我们添加了enter_fade()exit_fade()动画效果,使得数据点和标签在动画中逐渐出现和消失,增强了动画的流畅性和视觉吸引力。在图形的美化方面,我们自定义了颜色方案以区分不同大陆,使用了scale_color_manual函数指定每个大陆的颜色,这样可以更直观地展示大陆间的差异。点的大小范围也进行了调整,确保在不同人口规模的国家间有明显的视觉差异。

最后,通过theme_minimaltheme函数,我们选择了简约主题,并对标题、轴标签和文本进行了样式调整,使得图形更加整洁和易于阅读。生成的动画将保存为GIF文件,这样便可以方便地分享和展示图形数据。

# 使用gganimate来制作动画
anim <- p + 
  transition_time(year) +  # 随时间变化
  ease_aes('cubic-in-out') +  # 使用更平滑的动画过渡效果
  enter_fade() +  # 添加进入动画
  exit_fade()     # 添加退出动画

# 保存动画为GIF文件
anim_save("enhanced_gapminder_animation.gif", anim)

总之,这段代码通过综合使用ggplot2gganimateggrepel等多个R包的功能,创建了一个展示人均GDP与人均寿命关系的动态动画图。

动态图的截图之一

~~~~~~~

 

 市面上的 R 语言培训班和书籍(包括网络上的文章或视频),由于受限于培训时间或书籍篇幅,往往难以深入探讨 R 语言在数据科学或人工智能中的具体应用场景,内容泛泛而谈,最终无法真正解决实际工作中的问题。同时,它们也缺乏针对医药领域的深度结合与讨论。为了解决这些痛点,我们推出了《用 R 探索医药数据科学》专栏。该专栏将持续更新,不仅为您提供系统化的学习内容,更致力于成为您掌握最新、最全医药数据科学技术的得力助手。

  •  每篇文章篇幅在5000字 至9000字之间。
  • 内容涵盖试验统计、预测模型、科研绘图、数据库、机器学习等热点领域。

《用 R 探索医药数据科学》专栏目录(截止11月份23日)

第一章:认识数据科学和R

1章1节:医药数据科学的历程和发展,用R语言探索数据科学(更新20241029)-CSDN博客

1章2节:机器学习、统计学与ChatGPT的概述,与R语言的相关 (更新20241229)_ai、chatgpt和机器学习什么关系-CSDN博客

1章3节:R 语言的产生与发展轨迹(更新2024/08/14)-CSDN博客

1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演示(更新20240814)-CSDN博客

第二章:R的安装和数据读取

2章1节:R和RStudio的下载和安装(Windows 和 Mac)-CSDN博客

2章2节:RStudio 四大区应用全解,兼谈 R 的代码规范与相关文件展示_rstudio的console和terminal-CSDN博客

2章3节:RStudio的高效使用技巧,自定义RStudio环境(更新20241023)_rstudio如何使用-CSDN博客

2章4节:用RStudio做项目管理,静态图和动态图的演示,感受ggplot2的魅力-CSDN博客

2章5节:详解R的扩展包管理(从模糊安装到自动更新)及工作目录和工作空间的设置(更新20241030 )-CSDN博客

2章6节:R的数据集读取和利用,如何高效地直接复制黏贴数据到R(20240807 )_r语言 复制数据集-CSDN博客

2章7节:读写RDS,CSV,TXT,Excel,SPSS、SAS、Stata、Minitab等的数据文件(更新20240807)_r语言读取rds文件-CSDN博客

2章8节:一文学会 R Markdown 的文档核心操作,切记文末有R资源的分享_r markdown文件(.rmd)-CSDN博客

2章9节:认识R与数据库连接和网络爬虫,学会在R中使用SQL语言_sql和r语言-CSDN博客

2章10节:用 R 直接下载并分析 NHANES 数据库的数据,文末示例自创便捷下载函数(更新20240807)_nhanes数据分析-CSDN博客

第三章:认识数据

3章1节:数据的基本概念以及 R 中的数据结构、向量与矩阵的创建及运算-CSDN博客

3章2节:继续讲R的数据结构,数组、数据框和列表-CSDN博客

3章3节:R的赋值操作与算术运算_r里面的赋值-CSDN博客

3章4节:R的逻辑运算和矩阵运算-CSDN博客

3章5节:R 语言的循环与遍历函数全解析-CSDN博客

第四章:数据的预处理

4章1节:全面了解 R 中的数据预处理,通过 R 基本函数实施数据查阅_r数据预处理-CSDN博客

4章2节:从排序到分组和筛选,通过 R 的 dplyr 扩展包来操作-CSDN博客

4章3节:处理医学类原始数据的重要技巧,R语言中的宽长数据转换,tidyr包的使用指南-CSDN博客

4章4节:临床数据科学中如何用R来进行缺失值的处理_临床生存分析缺失值r语言-CSDN博客

4章5节:数据科学中的缺失值的处理,删除和填补的选择,K最近邻填补法-CSDN博客

4章6节:R的多重填补法中随机回归填补法的应用,MICE包的实际应用和统计与可视化评估-CSDN博客

4章7节:用R做数据重塑,数据去重和数据的匹配-CSDN博客

4章8节:用R做数据重塑,行列命名和数据类型转换-CSDN博客

4章9节:用R做数据重塑,增加变量和赋值修改,和mutate()函数的复杂用法_r语言如何在数据集中添加变量-CSDN博客

4章10节:用R做数据重塑,变体函数应用详解和可视化的数据预处理介绍-CSDN博客

4章11节:用R做数据重塑,数据的特征缩放和特征可视化-CSDN博客

4章12节:R语言中字符串的处理,正则表达式的基础要点和特殊字符-CSDN博客

4章13节:R语言中Stringr扩展包进行字符串的查阅、大小转换和排序-CSDN博客

4章14节:R语言中字符串的处理,提取替换,分割连接和填充插值_r语言替换字符串-CSDN博客

4章15节:字符串处理,提取匹配的相关操作扩展,和Stringr包不同函数的重点介绍和举例-CSDN博客

4章16节:R 语言中日期时间数据的关键处理要点_r语言 时刻数据-CSDN博客

第五章:定量数据的统计描述

5章1节:用R语言进行定量数据的统计描述,文末有众数的自定义函数-CSDN博客

5章2节:离散趋势的描述,文末1个简单函数同时搞定20个结果-CSDN博客

5章3节:在R语言中,从实际应用的角度认识假设检验-CSDN博客

5章4节:从R语言的角度认识正态分布与正态性检验-CSDN博客

5章5节:认识方差和方差齐性检验(三种方法全覆盖)-CSDN博客

5章6节:R语言中的t检验,独立样本的t检验-CSDN博客

5章7节:单样本t检验和配对t检验-CSDN博客

5章8节:方差分析(ANOVA)及其应用-CSDN博客

5章9节:组间差异的非参数检验,Wilcoxon秩和检验和Kruskal-Wallis检验-CSDN博客

第六章:定性数据的统计描述 

6章1节:定性数据的统计描述之列联表,文末有优势比计算介绍-CSDN博客

6章2节:认识birthwt数据集,EpiDisplay和Gmodels扩展包的应用-CSDN博客

6章3节:独立性检验,卡方检验,费希尔精确概率检验和Cochran-Mantel-Haenszel检验-CSDN博客

6章4节:相关关系和连续型变量的Pearson相关分析-CSDN博客

6章5节:分类型变量的Spearman相关分析,偏相关分析和相关图分析-CSDN博客

6章6节:相关图的GGally扩展包,和制表的Tableone扩展包-CSDN博客

第七章:R的传统绘图

7章1节:认识R的传统绘图系统,深度解析plot()函数和par()函数的使用-CSDN博客

7章2节:R基础绘图之散点图、直方图和概率密度图-CSDN博客

7章3节:R基础绘图之条形图和堆积条形图-CSDN博客

7章4节:饼图,箱线图和克利夫兰点图-CSDN博客

7章5节:散点矩阵图,与小提琴图、Cleveland 点图、马赛克图和等高图-CSDN博客

7章6节:用R进行图形的保存与导出,详细的高级图形输出,一文囊括大多数保存的各种问题,和如何批量保存不同情况的图形-CSDN博客

 

第八章:R的进阶绘图

8章1节:认识 ggplot2 扩展包,深度解析 qplot() 函数的使用-CSDN博客

8章2节:ggplot2绘图之原理逻辑分解,掌握绘图步骤(更新20241104)-CSDN博客

8章3节:ggplot2绘图之内置主题设置全解析(更新20241104)-CSDN博客

8章4节:ggplot2绘图之几何体解析(一),参考线和基准线与分布图和频数图(更新20241104)-CSDN博客

8章5节:ggplot2绘图之几何体解析(二),关系图和时间序列图与误差条和高级图形平滑曲线(更新20241104)-CSDN博客

8章6节:坐标轴须图和带状图(更新20241107)_维恩图 约翰·维恩-CSDN博客

8章7节:平行坐标图和小提琴图_r语言parallelplot绘制平行坐标图-CSDN博客

8章8节:雷达图和RadViz图-CSDN博客

8章9节:词云图和树图(更新20241106)_echarts 可以生成词云图吗-CSDN博客

8章10节:维恩图和UpSet图_ae做柱状图动态图-CSDN博客

8章11节:R的地理图绘制(更新20241104)-CSDN博客

8章12节:三维图,由三维散点图起步,引入回归模型平面,到复杂坐标和渐变色的三维曲面图(更新20241107)-CSDN博客

8章13节:网络图(知识图谱)绘制的深度解析(更新20241109)-CSDN博客

8章14节:高质量动态图和交互式动态图

8章15节:让 ggplot2 绘图进行顶级科研杂志的配色(更新20241118) 

8章16节:个性化配色的自定义颜色演示

8章17节:轻便科研绘图的tidyplots扩展包

第九章:临床试验的统计 

9章1节:初步认识临床试验(约7500字)-CSDN博客

9章2节:样本量估计的初步介绍-CSDN博客

9章3节:用R进行样本量估计的统计学参数-CSDN博客

9章4节:两组例数相同的均数比较的样本量估计和绘制功效曲线-CSDN博客

9章5节:两组的例数不等的均数比较的样本量估计和可视化-CSDN博客

9章6节:自身配对设计的均数比较临床试验的样本量估计和可视化-CSDN博客

9章7节:与总体均数比较的样本量估计和可视化-CSDN博客

9章8节: 两、三组试验组率比较的样本量估算和可视化-CSDN博客

9章9节:试验的随机分组认识,用R做简单随机化-CSDN博客

9章10节:用R实现分层随机化-CSDN博客

9章11节:用R实现区组随机化和置换区组随机化-CSDN博客

9章12节:动态随机化方法介绍,和用R绘制随机化卡片-CSDN博客

第十章:Meta分析攻略

10章1节:认识循证医学中的Meta分析,并予代码演示分析绘图-CSDN博客

​​10章2节:Meta分析的7大步骤的扼要解读-CSDN博客

10章3节:二分类变量的Meta分析模型,分析公式构建和结果解读-CSDN博客

10章4节:二分类变量的Meta分析模型,绘制漏斗图和应用剪补法,最后绘制和解读轮廓增强漏斗图-CSDN博客

10章5节:二分类变量的Meta分析模型,敏感性分析和亚组分析,绘制森林图-CSDN博客

10章6节:连续型变量的Meta分析和可视化分析全解-CSDN博客

10章7节:用R进行单个率Meta分析-CSDN博客

10章8节:用R进行网状Meta分析细解-CSDN博客

第十一章:主成分分析

11章1节:深度讲解用R进行主成分分析(上)-CSDN博客

11章2节:​深度讲解用R进行主成分分析(中)-CSDN博客

11章3节:​深度讲解用R进行主成分分析(下)-CSDN博客

11章4节:学会用R进行因子分析(上)-CSDN博客  

11章5节:学会用R进行因子分析(中)-CSDN博客

11章6节:学会用R进行因子分析(下)-CSDN博客

第十二章:常见类型回归分析

12章1节:认识回归分析的历史背景及应用-CSDN博客

12章2节:构建一元和多元的线性回归模型-CSDN博客

12章3节:回归模型中哑变量的应用和设置-CSDN博客

12章4节:深度解读构建回归模型表达式的九个关键符号-CSDN博客

12章5节:深度剖析回归模型结果的相关函数-CSDN博客

12章6节:深度解读线性回归模型的绘图判断-CSDN博客

12章7节:构建因变量为分类变量的二分类Logistic回归模型-CSDN博客

12章8节:详解不同逻辑回归模型的比较,和如何进行变量优化-CSDN博客

12章9节:深度讲解有序多分类Logistic回归模型的分析-CSDN博客

12章10节:条件Logistic回归模型的分析-CSDN博客

第十三章:生存分析模型

13章1节:生存分析的基本概念和主要内容-CSDN博客

13章2节:用R进行生存率的描述与估计-CSDN博客

13章3节:生存分析的假设检验及可视化展示-CSDN博客

13章4节:认识比例风险模型和Cox比例风险模型,学会从协变量的调整选择最优模型-CSDN博客

13章5节:用逐步回归方法来选择模型协变量,比例风险假定的检验和森林图的绘制-CSDN博客

第十四章:匹配技术应用

14章1节:认识临床研究的匹配技术-CSDN博客

14章2节:匹配结果的可视化和匹配后新数据分析-CSDN博客

第十五章:判别和聚类分析

15章1节:医学研究中的判别分析和聚类分析-CSDN博客

15章2节:线性判别分析预测模型构建评估和可视化演示-CSDN博客

15章3节:二次判别分析技术的运用-CSDN博客

15章4节:K-Means聚类分析的运用,和改进算法的K-Means++-CSDN博客

15章5节:实现k-medoids聚类算法的PAM和CLARA方法-CSDN博客

15章6节:凝聚层次聚类和分裂层次聚类-CSDN博客

第十六章:机器学习入门 

16章1节:机器学习和人工智能的基础知识-CSDN博客

16章2节:机器学习在临床预测中的应用场景,与临床预测模型的关键步骤解析-CSDN博客

16章3节:详析训练数据集、测试数据集和验证数据集及其划分策略-CSDN博客

16章4节:采用随机抽样法和等比抽样法对数据集进行二份及三份的划分-CSDN博客

16章5节:划分数据的多次随机抽样的Bootstrap法和加权随机抽样法-CSDN博客

16章6节:交叉验证概述与分类,R中K折交叉验证的详细解析-CSDN博客

16章7节:机器学习算法解读,与数值预测回归模型构建-CSDN博客

16章8节:朴素贝叶斯分类预测模型,从构建、解析到实战-CSDN博客

16章9节:认识决策树,构建CART算法的决策树模型-CSDN博客

16章10节:深度解析如何构建随机森林算法预测模型-CSDN博客

16章11节:构建人工神经网络反向传播算法预测模型-CSDN博客

16章12节:认识机器学习的模型评估,掌握数值型数据的模型评估方法-CSDN博客

16章13节:分类模型的混淆矩阵评估-CSDN博客

16章14节:评估和对比预测模型的ROC曲线和AUC值-CSDN博客

16章15节:六大ROC曲线扩展包的对比,和其它评估曲线的绘制-CSDN博客

第十七章:文献计量学 

17章1节:文献计量分析基础-CSDN博客

17章2节:文献计量学的国外数据库的数据采集,WOS数据库和PUBMED数据库的文献信息批量下载和分析

17章3节:国际六大科研文献数据库的数据加载与格式转换解析

17章4节:文献计量学中数据合并、去重、切片与编辑 

17章5节:文献计量学的描述性分析

17章6节:文献计量学的可视化与引文信息分析

17章7节:作者主导性分析及H指数与其变体的应用 

17章8节:Lotka分析和知识单元时序分析

17章9节:局部被引次数分析与文献文本字段术语提取研究

17章10节:为构建网络图从文献数据中提取特定信息-CSDN博客

17章11节:文献计量分析合作情况可视化-CSDN博客

17章12节:耦合网络可视化,从常规网络图到耦合分析聚类图的深度讲解-CSDN博客

17章13节:共被引网络、历史共被引网络和共词网络的可视化-CSDN博客

​​17章14节:概念结构图,贡献度最高文献因子图和最被引用文献因子图-CSDN博客

 17章15节:文献计量学的语义地图和主题演化分析图-CSDN博客

17章16节:PubMed数据库的数据提取和可视化-CSDN博客

17章17节:文献计量中著作层面的情感分析-CSDN博客

第十八章:时间序列分析

18章1节:认识时间序列分析,创建和整理时间序列数据-CSDN博客

18章2节:深度讲解白噪音检验-CSDN博客

18章3节:认识ARIMA模型和模拟其数据,讲解平稳性检验-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

R科学与人工智能

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

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

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

打赏作者

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

抵扣说明:

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

余额充值