You need to enable JavaScript to run this app. ggmap如何添加自定义离散填充色向量并合并气泡与填充色图例
优惠活动
大模型
产品
解决方案
定价
更多

ggmap如何添加自定义离散填充色向量并合并气泡与填充色图例

问题1:自定义填充色不生效的调整方案

ggplot2中同一美学映射(此处为fill)不能同时设置两个标度函数,你当前代码中已经调用了scale_fill_discrete,所以后续添加的scale_fill_manual会被覆盖失效,直接替换原有离散填充标度即可:

  • 删除原有代码中的scale_fill_discrete(guide = guide_legend(override.aes = list(size = 4)))行
  • 新增scale_fill_manual传入自定义颜色向量,示例如下:
# 替换为你自己的自定义颜色向量,长度要和Super_Region的类别数一致
custom_colors <- c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", "#FF7F00", "#FFFF33")

map_K30 <- ggmap(get_googlemap(center = c(lon=180.000, lat=36.659), zoom=2, maptype = 'terrain', color = 'color')) + 
  geom_point(data = results, aes(x = lon, y = lat, size = Genetic_Similarity, fill= Super_Region), shape = 21, alpha = .8) +
  scale_size_area(max_size = 15) +
  # 替换原有scale_fill_discrete的位置
  scale_fill_manual(values = custom_colors)

问题2:合并双图例并添加标注的实现方案

可以通过统一两个标度的图例名称、自定义标签内容的方式实现需求,无需额外插入表格:

实现逻辑:

  1. 给scale_size_area和scale_fill_manual设置完全相同的name参数,ggplot2会自动将同名称的图例合并
  2. 自定义图例标签,将Super_Region名称和Genetic_Similarity百分比拼接为标签文本
  3. 在图例引导参数中设置合适的气泡大小匹配实际映射规则

完整修改后代码示例:

results <- read.csv("A.csv")
# 先预处理生成图例标签:区域名+百分比
results$legend_label <- paste0(results$Super_Region, ":", scales::percent(results$Genetic_Similarity, accuracy = 0.1))
# 自定义颜色向量,按你的需求调整
custom_colors <- c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", "#FF7F00", "#FFFF33")

map_K30 <- ggmap(get_googlemap(center = c(lon=180.000, lat=36.659), zoom=2, maptype = 'terrain', color = 'color')) + 
  geom_point(data = results, aes(x = lon, y = lat, size = Genetic_Similarity, fill= Super_Region), shape = 21, alpha = .8) +
  # 大小标度设置和fill标度相同的name,同时指定标签和引导样式
  scale_size_area(max_size = 15, 
                  name = "区域遗传相似性",
                  labels = results$legend_label,
                  guide = guide_legend(override.aes = list(fill = custom_colors))) +
  # 填充标度和size标度用相同的name,实现图例合并
  scale_fill_manual(values = custom_colors,
                    name = "区域遗传相似性",
                    labels = results$legend_label,
                    guide = "none") # 关闭fill独立图例,只保留合并后的size图例

如果你的数据集内每个Super_Region对应多个Genetic_Similarity值,可以先统计每个区域的代表值(如均值、最值)再生成标签即可。

内容的提问来源于stack exchange,提问作者Gene100

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 04:39:01