You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ggplot2绘图需求:按Country分组排布、配色并标记高人口City

用ggplot2实现分组x轴散点图并添加特定标签

完整实现代码

library(ggplot2)

# 原始数据框
d <- data.frame(City = LETTERS[1:9],
                popu = c(8975,3421,5433,1066,4529,9012,6732,5801,3396),
                Country = c("UA","UA","AS","UK","UA","AS","UK","Is","Is"))

# 调整城市顺序:按国家分组排列
d$City <- factor(d$City, levels = d$City[order(d$Country)])

# 绘制散点图
ggplot(d, aes(x = City, y = popu, color = Country)) +
  geom_point(size = 3) +
  # 给人口超7500的城市加标签
  geom_text(data = subset(d, popu > 7500), 
            aes(label = City), 
            nudge_y = 200,
            size = 4) +
  labs(title = "城市人口分布", x = "城市", y = "人口数量", color = "所属国家") +
  theme_minimal()

关键步骤说明

  • 按国家分组排布x轴&配色:

    • 将City转为因子类型,通过order(d$Country)得到按国家排序后的行索引,以此设置因子的层级,这样x轴上同属一个国家的城市会自动相邻排列。
    • 在绘图的aes映射里指定color = Country,ggplot会自动为不同国家分配区分色,要是需要自定义颜色,用scale_color_manual(values = c("UA" = "#2E8B57", "AS" = "#FF6347", "UK" = "#4682B4", "Is" = "#FFD700"))这类代码即可。
  • 给高人口城市加标签:

    • 用geom_text实现标签,通过subset(d, popu > 7500)筛选出人口超过7500的城市数据。
    • nudge_y = 200让标签在对应点的上方偏移一段距离,避免和点重叠,偏移量可以根据你的数据范围调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:57:23