在世界地图上标注单倍型分布
**在进行种群遗传结构、迁移模式和进化历史的研究中,单倍型的分布是一个必做的分析。我这边给大家分享一下如何通过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控制台中运行以下命令来安装这些包:**
```r
install.packages("ggplot2")
install.packages("maps")
install.packages("dplyr")
```
# 运行代码
**注意第11行和30行代码与你的单倍型对应。**
```r
# 加载必需的库
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行更改颜色。**
![](data/attachment/forum/plugin_zhanmishu_markdown/202408/90275d75eb3f9560764e0a2c1fe8fd8a_1724374559_8827.jpg)
页:
[1]