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

如何在R的条形图中添加美国2010年城市人口占比信息?

美国城乡人口占比融入全球人口条形图的实现方案

现有R代码绘制了2010年全球人口前五国家的占比条形图,需求是将美国的条形拆分为两部分:80%的城市区域用不同颜色显示,并添加文本标注“Urban Areas (80%)”。

修改后的完整代码

library(tidyverse)
library(forcats)

# 预处理原始数据:筛选2010年、前五国家并计算全球占比
df <- population |>
  filter(year == 2010) |>
  mutate(pct = proportions(population) * 100) |>
  filter(country %in% c("China", "India", "United States of America", "Indonesia", "Brazil"))

# 拆分美国的城乡人口数据,其他国家保持整体统计
df_split <- df |>
  mutate(
    # 为美国创建城乡分组,其余国家标记为"Total"
    group = case_when(
      country == "United States of America" ~ c("Urban", "Rural"),
      TRUE ~ "Total"
    ),
    # 计算对应占比:美国城市占总占比的80%,乡村占20%;其他国家保留原占比
    pct_split = case_when(
      country == "United States of America" & group == "Urban" ~ pct * 0.8,
      country == "United States of America" & group == "Rural" ~ pct * 0.2,
      TRUE ~ pct
    )
  ) |>
  ungroup()

# 绘制分层条形图
df_split |>
  ggplot(aes(x = fct_reorder(country, desc(pct)), y = pct_split, fill = group)) +
  geom_col(position = position_stack()) +
  # 为美国城市区域添加文本标注
  geom_text(
    data = filter(df_split, country == "United States of America" & group == "Urban"),
    aes(label = "Urban Areas (80%)"),
    y = ~ .$pct_split / 2,  # 将文本放在城市区域条形的中间位置
    color = "white",
    fontface = "bold"
  ) +
  # 自定义颜色:美国乡村部分与其他国家条形颜色一致,城市部分用区分色
  scale_fill_manual(
    values = c("Total" = "#2ecc71", "Urban" = "#3498db", "Rural" = "#2ecc71"),
    guide = "none"
  ) +
  scale_y_continuous(labels = \(x) paste0(x, "%")) +
  labs(
    title = "Top five countries of the world by population in 2010",
    x = element_blank(),
    y = element_blank()
  ) +
  theme_minimal()

关键修改说明

  • 数据分层处理:通过case_when给美国单独拆分出Urban和Rural两个分组,分别计算对应占比;其他国家保留整体统计,避免破坏原有图表结构。
  • 堆叠条形实现:用geom_col(position = position_stack())替代原geom_bar,实现美国条形的分层堆叠效果。
  • 精准文本标注:针对美国的城市区域单独添加文本,通过y参数将文本定位在条形中间,确保标注清晰且对应正确区域。
  • 颜色统一适配:设置美国乡村部分的颜色与其他国家条形一致,仅城市部分使用不同颜色,既突出信息又保持图表整体协调性。

内容的提问来源于stack exchange,提问作者always.learning

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:04:57