在进行种群遗传结构、迁移模式和进化历史的研究中,单倍型的分布是一个必做的分析。我这边给大家分享一下如何通过R语言优雅的在世界地图上标注单倍型分布。
数据准备
第1列到第5列分别代表“地点名称”,“经度”,“纬度”,“单倍型A的百分比”,“单倍型B的百分比”,“单倍型C的百分比”
location |
latitude |
longitude |
haplotype_A |
haplotype_B |
haplotype_C |
Beijing |
39.9 |
116.4 |
0.5 |
0.3 |
0.2 |
SaoPaulo |
-23.55 |
-46.63 |
0.2 |
0.6 |
0.2 |
NewYork |
40.71 |
-74 |
0.4 |
0.3 |
0.3 |
Mumbai |
19.08 |
72.88 |
0.3 |
0.4 |
0.3 |
准备工作
在开始之前,请确保您的R环境中安装了以下包:
<span class="ne-text">ggplot2</span> :用于创建图形。
<span class="ne-text">maps</span> :用于获取地图数据。
<span class="ne-text">dplyr</span> :用于数据操作。
在R控制台中运行以下命令来安装这些包:
install.packages("ggplot2")
install.packages("maps")
install.packages("dplyr")
运行代码
注意第11行和30行代码与你的单倍型对应。
# 加载必需的库
library(ggplot2)
library(dplyr)
library(maps)
# 示例数据,包含四个地点的纬度、经度和不同单倍型的百分比
data<-read.table('C:/Users/cuibaofeng/Desktop/新建文本文档.txt',header=T)
# 将数据从宽格式转换为长格式,方便ggplot2处理
bubble_data <- data %>%
tidyr::pivot_longer(cols = c("haplotype_A", "haplotype_B", "haplotype_C"), #注意和你的单倍型数目对应
names_to = "haplotype", values_to = "percentage") %>%
mutate(haplotype = sub("haplotype_", "", haplotype)) # 移除列名前缀,简化显示
# 获取世界地图数据
world_map <- map_data("world")
# 初始化ggplot对象,设置地图底图
gg <- ggplot() +
geom_polygon(data = world_map, aes(x = long, y = lat, group = group), fill = "gray", color = "white") +
coord_fixed(1.3) # 固定地图的纵横比,避免变形
# 绘制气泡图,使用位置偏移减少重叠
gg <- gg + geom_point(data = bubble_data,
aes(x = longitude, y = latitude, size = percentage, color = haplotype),
position = position_jitter(width = 2, height = 3), # 添加随机偏移,防止图形完全重叠
alpha = 0.6) # 设置透明度为0.6,使图形更易于观看
# 自定义颜色
gg <- gg + scale_color_manual(values = c("A" = "blue", "B" = "green", "C" = "red",bias=0.5)) #注意和你的单倍型数目对应
# 调整图例和气泡大小
gg <- gg + guides(size = guide_legend(title = "Percentage")) +
scale_size(range = c(3, 10)) # 设置气泡大小的范围,从3到10
# 添加地点标签
gg <- gg + geom_text(data = data,
aes(x = longitude, y = latitude, label = location),
vjust = 1.5, hjust = 1.5) # 调整标签位置,避免与气泡重叠
# 显示图形
print(gg)
结果解读
圆圈的颜色代表不同单倍型,圆圈的大小代表单倍型的比例,大家可以在代码的30行更改颜色。
|