让数据更有魅力!高分SCI必备:个性化山脊图与双向柱状图大揭秘!
1.介绍
本文将介绍一个使用R语言复现高质量山脊图与双向柱状图合并的案例。在基因研究中,可以使用山脊图展示不同基因的表达分布,同时使用双向柱状图比较不同基因的表达变化。这种组合图表可以提供丰富的信息,有助于更深入的分析和理解数据。
山脊图 (Ridge Plot)
功能和优点:
显示多组数据的分布:山脊图可以在同一个图表中显示多个变量或类别的分布情况,每个变量或类别都有一个独立的密度曲线。 清晰的层次结构:通过将密度曲线堆叠在一起,山脊图可以有效展示数据的层次结构,使得不同组之间的比较更加直观。
应用:
在生物信息学中,山脊图可以用来比较不同基因在不同条件下的表达分布,在金融领域,可以用来显示不同股票或投资组合的收益分布。
双向柱状图 (Diverging Bar Chart)
功能和优点:
对比正负值:双向柱状图可以同时显示正负值或两个相对方向的数据,非常适合用于对比两组数据。 简洁清晰:通过简洁的柱状表示,读者可以快速理解数据的分布和差异。 对称布局:对称的布局使得正负值或两组数据的对比更加直观。
应用:
在医学研究中,用来比较治疗前后或两组病人的健康指标。
合并图的优点
合并图有助于直观地展示多维数据,将不同类型的数据整合到一个图表中,便于比较和分析。通过结合山脊图和双向柱状图等多种图形元素,合并图能够展示数据的趋势、分布和对比,提供一个更全面的视角。 此外,合并图能够节省版面空间,避免了多个单独图表带来的冗余。它也可以突出重要信息或发现数据中的相关性,帮助读者更快地理解和获取关键信息。 总之,合并图通过综合展示不同数据视角,增强了数据表达的清晰度和信息量。
2.可视化效果
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 ·
永远相信美好的事情
即将发生