让数据更有魅力!高分SCI必备:个性化山脊图与双向柱状图大揭秘!

文摘   2024-07-25 07:50   德国  

让数据更有魅力!高分SCI必备:个性化山脊图与双向柱状图大揭秘!

1.介绍

本文将介绍一个使用R语言复现高质量山脊图与双向柱状图合并的案例。在基因研究中,可以使用山脊图展示不同基因的表达分布,同时使用双向柱状图比较不同基因的表达变化。这种组合图表可以提供丰富的信息,有助于更深入的分析和理解数据。

山脊图 (Ridge Plot)

功能和优点:

  • 显示多组数据的分布:山脊图可以在同一个图表中显示多个变量或类别的分布情况,每个变量或类别都有一个独立的密度曲线。
  • 清晰的层次结构:通过将密度曲线堆叠在一起,山脊图可以有效展示数据的层次结构,使得不同组之间的比较更加直观。

应用:

在生物信息学中,山脊图可以用来比较不同基因在不同条件下的表达分布,在金融领域,可以用来显示不同股票或投资组合的收益分布。

SCI论文中的山脊图

双向柱状图 (Diverging Bar Chart)

功能和优点:

  • 对比正负值:双向柱状图可以同时显示正负值或两个相对方向的数据,非常适合用于对比两组数据。
  • 简洁清晰:通过简洁的柱状表示,读者可以快速理解数据的分布和差异。
  • 对称布局:对称的布局使得正负值或两组数据的对比更加直观。

应用:

在医学研究中,用来比较治疗前后或两组病人的健康指标。

SCI论文中的双向柱状图

合并图的优点

  • 合并图有助于直观地展示多维数据,将不同类型的数据整合到一个图表中,便于比较和分析。通过结合山脊图和双向柱状图等多种图形元素,合并图能够展示数据的趋势、分布和对比,提供一个更全面的视角。
  • 此外,合并图能够节省版面空间,避免了多个单独图表带来的冗余。它也可以突出重要信息或发现数据中的相关性,帮助读者更快地理解和获取关键信息。
  • 总之,合并图通过综合展示不同数据视角,增强了数据表达的清晰度和信息量。

2.可视化效果

原图
R语言复现

3.代码

加载所需的包

#R
# 导入包
library(ggplot2)
library(ggridges)
library(gridExtra)

创建示例数据

set.seed(123)
data <- data.frame(
  GENE = rep(paste0("GENE", 1:20), each = 100),
  Value = c(rnorm(100, mean = 0, sd = 0.01), 
            rnorm(100, mean = 0, sd = 0.02),
            rnorm(100, mean = 0, sd = 0.03),
            rnorm(100, mean = 0, sd = 0.04),
            rnorm(100, mean = 0, sd = 0.05),
            rnorm(100, mean = 0, sd = 0.06),
            rnorm(100, mean = 0, sd = 0.07),
            rnorm(100, mean = 0, sd = 0.08),
            rnorm(100, mean = 0, sd = 0.09),
            rnorm(100, mean = 0, sd = 0.10),
            rnorm(100, mean = 0, sd = 0.11),
            rnorm(100, mean = 0, sd = 0.12),
            rnorm(100, mean = 0, sd = 0.13),
            rnorm(100, mean = 0, sd = 0.14),
            rnorm(100, mean = 0, sd = 0.15),
            rnorm(100, mean = 0, sd = 0.16),
            rnorm(100, mean = 0, sd = 0.17),
            rnorm(100, mean = 0, sd = 0.18),
            rnorm(100, mean = 0, sd = 0.19),
            rnorm(100, mean = 0, sd = 0.20)),
  Group = rep(c("Group1""Group2"), each = 1000)
)
head(data)
数据示例

绘制山脊图

p1 <- ggplot(data, aes(x = Value, y = GENE, fill = Group)) +
  geom_density_ridges(alpha = 0.7, scale = 2) +
  theme_ridges() +
  theme(legend.position = "none") +
  labs(x = NULL, y = NULL)
print(p1)
基础山脊图

创建双向柱状图数据

set.seed(123)
bar_data <- data.frame(
  GENE = paste0("GENE", 1:20),
  Value1 = sample(1:20, 20),
  Value2 = sample(1:20, 20)
)
head(bar_data)
数据示例

绘制双向柱状图

p2 <- ggplot(bar_data, aes(y = GENE)) +
  geom_bar(aes(x = Value1), stat = "identity", fill = "blue") +
  geom_bar(aes(x = -Value2), stat = "identity", fill = "orange") +
  theme_minimal() +
  theme(axis.text.y = element_blank(), axis.ticks.y = element_blank()) +
  labs(x = NULL, y = NULL)
print(p2)
基础双向柱状图

将两个图形组合在一起

grid.arrange(p1, p2, ncol = 2)
基础组合图

图形美化和对齐

# 绘制山脊图
p3 <- ggplot(data, aes(x = Value, y = GENE, fill = Group,color=Group)) +
  geom_density_ridges(alpha = 0.7, scale = 2) +
  scale_fill_manual(values = c("#A9B7AA""#976666")) + # 莫兰迪配色
  scale_color_manual(values = c("#2A483A""#674D41")) + # 莫兰迪配色
  theme_classic() +
  theme(legend.position = "none") +
  labs(x = NULL, y = NULL)
print(p3)

# 绘制双向柱状图
p4 <- ggplot(bar_data, aes(y = GENE)) +
  geom_bar(aes(x = Value1), stat = "identity", fill = "#7A848D", color="#53565C") + # 莫兰迪配色
  geom_bar(aes(x = -Value2), stat = "identity", fill = "#D4C9C6", color="#59321D") + # 莫兰迪配色
  theme_bw() +
  theme(
    panel.border = element_blank(),      # 去除面板边框
    axis.line.x = element_line(),        # 仅保留x轴线
    axis.line.y = element_blank(),       # 去除y轴线
    axis.ticks.y = element_blank(),      # 去除y轴刻度
    axis.text.y = element_blank(),       # 去除y轴文本
    panel.grid = element_blank(),        # 去除网格线
    panel.background = element_blank(),  # 去除面板背景
    plot.background = element_blank()    # 去除图形背景
  ) +
  labs(x = NULL, y = NULL)
print(p4)

# 将两个图形组合在一起并对齐纵轴
# 使用 cowplot 包组合图形
library(cowplot)
# 对每个图形调整 theme 以减少外部边距
p3 <- p3 + theme(plot.margin = unit(c(1, 0, 1, 1), "lines"))
p4 <- p4 + theme(plot.margin = unit(c(1, 1, 1, 0), "lines"))

# 组合图形,移除图形之间的空白
aligned_plot <- plot_grid(
  p3, p4, 
  ncol = 2, 
  align = "v"
  axis = "tb",
  rel_widths = c(1.5, 1), 
  hjust = 0,
  vjust = 0
)
print(aligned_plot)
纵轴对齐和图形美化

现在:


长按扫码关注:科研生信充电宝

10元赞赏本文,即喜欢作者~


即可直接解锁:


《个性化山脊图与双向柱状图组合》对应资源哦~


看到这里你还不心动吗?


赶紧关注、转发、点赞、分享,领取你的专属福利吧~



好啦,以上就是今天推文的全部内容啦!


版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本公众号不拥有所有权,也不承担相关法律责任。

如果您发现本公众号中有涉嫌抄袭的内容,欢迎发送邮件至:kysxcdb@163.com 进行举报,一经查实,本公众号将立刻删除涉嫌侵权内容。

BIOINFOR

微信号|科研生信充电宝

 · BIOINFOR · 


永远相信美好的事情

即将发生



科研生信充电宝
介绍科研;介绍统计;介绍生信;
 最新文章