R语言绘图 --- 气泡图(Biorplot 开发日志 --- 4)

「写在前面」

在科研数据分析中我们会重复地绘制一些图形,如果代码管理不当经常就会忘记之前绘图的代码。于是我计划开发一个 R 包(Biorplot),用来管理自己 R 语言绘图的代码。本系列文章用于记录 Biorplot 包开发日志。


相关链接

相关代码和文档都存放在了 Biorplot GitHub 仓库:
https://github.com/zhenghu159/Biorplot

欢迎大家 Follow 我的 GitHub 账号:
https://github.com/zhenghu159

我会不定期更新生物信息学相关工具和学习资料。如果您有任何问题和建议,或者想贡献自己的代码,请在我的 GitHub 上留言。

介绍

气泡图,是一种以二维图形展示多维数据的可视化工具。它将数据点绘制在平面坐标系中,每个数据点用一个圆圈表示,圆圈的大小通常与某个维度的数值大小相关。通过气泡图,我们可以轻松地观察到数据点在各个维度上的分布情况,从而更好地理解数据的结构和规律。

Biorplot 中,我封装了 Bior_DotPlot() 函数来实现气泡图的绘制。

基础气泡图

绘制一个基础的气泡图如下:

alt

绘图代码:

df <- data.frame(
Sample = rep(paste('sample', 1:5, sep=''), 4),
Gene = rep(paste('gene', 1:4, sep=''), 5),
size = round(rnorm(20, mean = 10, sd = 5))
)
colour <- c("#1F77B4FF","#FF7F0EFF","#2CA02CFF","#D62728FF","#9467BDFF")
Bior_DotPlot(data = df, x = "Sample", y = "Gene", size = "size", color = "Gene",
x.text.col = F, ggtheme = theme_bw()) +
theme(axis.text.x = element_text(angle = 0, hjust = 0.5))

表达量气泡图

绘制一个表达量气泡图如下:

alt

绘图代码:

df <- data.frame(
Sample = rep(paste('sample', 1:4, sep=''), each=4),
Gene = rep(paste('gene', 1:4, sep=''), 4),
Pct = c(80,10,10,10,10,80,10,10,10,10,80,10,10,10,10,80),
Expression = c(3,0.5,0.1,0.3,0.3,3,0.2,0.6,0.1,0.7,3,0.1,0.5,0.2,0.1,3)
)

Bior_DotPlot(data = df, x = "Sample", y = "Gene", size="Pct", color = "Expression",
x.text.col = F, ggtheme = theme_bw()) +
theme(axis.text.x = element_text(angle = 0, hjust = 0.5)) +
scale_color_gradientn(colours = c("lightblue3", "lightblue", "white", "red", "red4"))

源码解析

Biorplot::Bior_DotPlot() 函数主要继承了 ggpubr::ggdotchart() 函数。

源码:

#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

#' Dot Plot
#' @description Create a dot plot.
#'
#' @importFrom ggpubr ggdotchart
#' @import ggplot2
#'
#' @inheritParams ggpubr::ggdotchart
#'
#' @return A ggplot object
#' @export
#'
#' @examples
#' # Examples 1
#' x <- rep(paste('sample', 1:5, sep=''), 4)
#' y <- rep(paste('gene', 1:4, sep=''), 5)
#' size <- round(rnorm(20, mean = 10, sd = 5))
#' colour <- c("#1F77B4FF","#FF7F0EFF","#2CA02CFF","#D62728FF","#9467BDFF")
#' p <- Bior_DotPlot(x = x, y = y, size = size, group.by = x, colour = colour, max_size=10)
#' p
Bior_DotPlot <- function(data, x, y, group = NULL,
combine = FALSE,
color = "black", palette = NULL,
shape = 19, size = NULL, dot.size = size,
sorting = c("ascending", "descending", "none"),
x.text.col = TRUE,
rotate = FALSE,
title = NULL, xlab = NULL, ylab = NULL,
facet.by = NULL, panel.labs = NULL, short.panel.labs = TRUE,
select = NULL, remove = NULL, order = NULL,
label = NULL, font.label = list(size = 11, color = "black"),
label.select = NULL, repel = FALSE, label.rectangle = FALSE,
position = "identity",
ggtheme = theme_pubr(),
...)
{
# Default options
.opts <- list(data = data, x = x, y = y, group = group,
combine = combine,
color = color, palette = palette,
shape = shape, size = size, dot.size = size,
sorting = sorting,
x.text.col = x.text.col,
rotate = rotate,
title = title, xlab = xlab, ylab = ylab,
facet.by = facet.by, panel.labs = panel.labs, short.panel.labs = short.panel.labs,
select = select, remove = remove, order = order,
label = label, font.label = font.label,
label.select = label.select, repel = repel, label.rectangle = label.rectangle,
position = position,
ggtheme = ggtheme,
...)

p <- do.call(ggpubr::ggdotchart, .opts)

return(p)
}

#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

「结束」

注:本文为个人学习笔记,仅供大家参考学习,不得用于任何商业目的。如有侵权,请联系作者删除。

alt

本文由 mdnice 多平台发布

相关推荐

  1. R 绘图 - 条形

    2024-06-09 14:24:03       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-09 14:24:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-09 14:24:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-09 14:24:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-09 14:24:03       18 阅读

热门阅读

  1. RAGFlow 学习笔记

    2024-06-09 14:24:03       10 阅读
  2. tcpdump 抓包

    2024-06-09 14:24:03       8 阅读
  3. TypeScript看这篇就够了

    2024-06-09 14:24:03       11 阅读
  4. 【分享】使用 Reducer 和 Context 拓展你的应用

    2024-06-09 14:24:03       13 阅读
  5. 力扣2799.统计完全子数组的数目

    2024-06-09 14:24:03       11 阅读
  6. lua中大数相乘的问题

    2024-06-09 14:24:03       10 阅读
  7. LeetCode 第401场周赛个人题解

    2024-06-09 14:24:03       12 阅读
  8. 二叉树的统一迭代法-前序中序后序-力扣

    2024-06-09 14:24:03       12 阅读