使用 ggbreak 包进行 Y 轴多次截断

简介: 使用 ggbreak 包进行 Y 轴多次截断

简介

最近在科研中需要比较不同模型的预测性能,我们使用相对偏差,均方根误差等来比较结果。此时,可能会得到以下结果:

上图出现以下问题:

  • 问题一:由于经典模型(Normal)在复杂数据中的预测效果不好,会出现预测非常差的情况,从而导致图形Y轴刻度被拉长,可视化效果不佳。
  • 问题二:相似方法预测结果相同,无法清晰看出之间的差异性。
  • 问题三:柱状图准确数字未知,只能通过主观方式估计最终结果。

基于以上问题,小编分别做了以下润色工作:

  1. 问题一二可以通过使用 ggbreak 包[1] 进行多次 Y 轴截断。
  2. 添加每个柱状图的准确数值结果来解决问题三。
  3. 简单修改图形颜色,删除图例,使其变得更加美观。

最后得到以下图形:

接下来给出可复现的代码供大家参考,读者可以根据自己数据进行调整。

使用教程

数据产生

为了方便读者复现,小编手动产生一些样例数据:

com_cost = c(17.64,4.89,5.13,8.43,5.32)
com_cost_re = data.frame("Method" = c("Normal","TS","Linear","Power","Exp"),"Value"= round(com_cost,3))
com_cost_re$Method <- factor(com_cost_re$Method, levels = c("Normal","Power","Exp","Linear","TS"))

可视化

首先,对该数据进行可视化,并做了些细节调整。例如:修改配色、添加文本、删除图例等。

gg1 = ggplot(com_cost_re, aes(x = Method, y = Value)) +
  geom_bar(stat = "identity", aes(fill = Method),alpha = 0.8) +
  scale_fill_viridis(discrete = T)+ # 修改配色
  geom_text(aes(label = Value), position = position_dodge(width = 0.8), 
            vjust = 2, size = 4,color = "white") +  # 添加文本
  coord_cartesian(ylim = c(4,18)) +  
  theme_bw() +  # 设置主题
  theme(panel.grid = element_blank(),legend.position = "none") + # 删除图例
  labs(title = "", x = "Method", y = "Criteria")
gg1

此时,图形美观度基本完成,接下来使用 ggbreak 包进行多次 Y 轴截断。主要使用 scale_y_break() 函数。

注意:关于  scale_y_break() 的其他参数设置可参考:ggbreak官网教程[2],这里不做过多重复介绍。

gg2 = gg1 + scale_y_break(c(5.35, 8.34)) + 
  scale_y_break(c(0, 4.7)) + 
  scale_y_break(c(8.5, 17.5))

此时得到的结果为:

小编有话说

本文主要是小编在科研中存在的一个问题,最终通过一些简单搜索和调包解决问题。供大家参考~

参考资料

[1]

ggbreak 包: https://github.com/YuLab-SMU/ggbreak

[2]

ggbreak官网教程: https://cran.r-project.org/web/packages/ggbreak/vignettes/ggbreak.html

目录
相关文章
|
9月前
|
SQL 存储 关系型数据库
Mysql并发控制和日志
通过深入理解和应用 MySQL 的并发控制和日志管理技术,您可以显著提升数据库系统的效率和稳定性。
348 10
|
10月前
|
机器学习/深度学习 数据采集 算法
机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用
医疗诊断是医学的核心,其准确性和效率至关重要。本文探讨了机器学习在医疗诊断中的前沿应用,包括神经网络、决策树和支持向量机等方法,及其在医学影像、疾病预测和基因数据分析中的具体应用。文章还讨论了Python在构建机器学习模型中的作用,面临的挑战及应对策略,并展望了未来的发展趋势。
649 1
|
10月前
|
缓存 运维 网络协议
深入Linux内核架构:操作系统的核心奥秘
深入Linux内核架构:操作系统的核心奥秘
472 2
|
并行计算 数据可视化 算法
CMplot & rMVP | 全基因组曼哈顿图和QQ图轻松可视化!
`CMplot`和`rMVP`是R语言中的两个包,用于全基因组关联分析(GWAS)的数据可视化。`CMplot`专注于曼哈顿图和QQ图的绘制,支持多种图表类型,如常见的SNP密度图、环状曼哈顿图、矩阵图、单条染色体图和多重曼哈顿图等。`rMVP`不仅包含了`CMplot`的功能,还支持更复杂的GWAS方法,如线性/混合线性模型和基因组选择算法,优化了内存管理和计算效率,特别适合大规模数据集。此外,它还提供PCA图和柱状图。两者都提供了丰富的参数定制图表。
936 1
CMplot & rMVP | 全基因组曼哈顿图和QQ图轻松可视化!
|
Go 开发工具 git
在Qemu+ARM上运行Minix3内核
在Qemu+ARM上运行Minix3内核
|
数据可视化 数据建模
R语言广义加性混合模型(GAMM)分析长沙气象因子、空气污染、PM2.5浓度、显著性检验、逐日变化可视化(下)
R语言广义加性混合模型(GAMM)分析长沙气象因子、空气污染、PM2.5浓度、显著性检验、逐日变化可视化
|
NoSQL Serverless Python
在Python的Pandas中,可以通过直接赋值或使用apply函数在DataFrame添加新列。
【5月更文挑战第2天】在Python的Pandas中,可以通过直接赋值或使用apply函数在DataFrame添加新列。方法一是直接赋值,如`df['C'] = 0`,创建新列C并初始化为0。方法二是应用函数,例如定义`add_column`函数计算A列和B列之和,然后使用`df.apply(add_column, axis=1)`,使C列存储每行A、B列的和。
627 0
ggplot2 | 关于标题,坐标轴和图例的细节修改,你可能想了解
ggplot2 | 关于标题,坐标轴和图例的细节修改,你可能想了解
506 0
|
数据处理 Windows
成信大ENVI_IDL第二周课堂内容:打开HDF4文件并读取文件以及简单的数据处理和保存+详细解析
成信大ENVI_IDL第二周课堂内容:打开HDF4文件并读取文件以及简单的数据处理和保存+详细解析
690 1
|
数据可视化 JavaScript 前端开发
植物泛基因组分析之可视化vg构建的Pan-SV初次尝试
植物泛基因组分析之可视化vg构建的Pan-SV初次尝试