前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2优雅绘制金子塔图

ggplot2优雅绘制金子塔图

作者头像
R语言数据分析指南
发布2023-08-18 13:58:16
1490
发布2023-08-18 13:58:16
举报

欢迎关注R语言数据分析指南

❝本节来介绍如何使用「ggplot2」来绘制年龄分布金子塔图,下面小编就通过一个案例来进行展示数据为随意构建无实际意义仅作图形展示用,希望各位观众老爷能够喜欢。 ❞

加载R包

代码语言:javascript
复制
library(tidyverse)
library(ggtext)
library(patchwork)
library(showtext)

导入数据

代码语言:javascript
复制
age_gaps <- readr::read_csv('age_gaps.txt')

数据清洗

代码语言:javascript
复制
act1_m <- age_gaps %>% filter(character_1_gender == "man") %>% pull(actor_1_age)
act2_m <- age_gaps %>% filter(character_2_gender == "man") %>% pull(actor_2_age)
act1_w <- age_gaps %>% filter(character_1_gender == "woman") %>% pull(actor_1_age)
act2_w <- age_gaps %>% filter(character_2_gender == "woman") %>% pull(actor_2_age)

ages_m <- c(act1_m, act2_m)
ages_w <- c(act1_w, act2_w)

构建绘图数据

代码语言:javascript
复制
ages_m_bins <- tibble(age = ages_m) %>% 
  mutate(bin = cut(ages_m, breaks = seq(0, 85, 5),
                   include.lowest = TRUE, right = FALSE)) %>% 
  count(bin) %>% 
  complete(bin, fill = list(n = 0)) %>% select(ages = bin, men = n)

ages_w_bins <- tibble(age = ages_w) %>% 
  mutate(bin = cut(ages_w, breaks = seq(0, 85, 5),
                   include.lowest = TRUE, right = FALSE)) %>% 
  count(bin) %>% 
  complete(bin, fill = list(n = 0)) %>% select(ages = bin, women = n)

ages_bins <- ages_m_bins %>%  
  left_join(ages_w_bins) %>% 
  mutate(ages_labels = c("0 - 4","5 - 9","10 - 14","15 - 19","20 - 24","25 - 29",
                         "30 - 34","35 - 39","40 - 44","45 - 49","50 - 54","55 - 59",
                         "60 - 64","65 - 69","70 - 74", "75 - 79", "80+")) %>% 
  rowid_to_column()

数据可视化

代码语言:javascript
复制
ggplot(data = ages_bins) +
   geom_rect(aes(xmin = -men - 25,xmax = -25, ymin = rowid - 0.4, ymax = rowid + 0.4),
             fill="#0487e2") +
   geom_rect(aes(xmin = 25,xmax = women + 25, ymin = rowid - 0.4, ymax = rowid + 0.4),
             fill="#ed2939") +
   geom_text(aes(x=0, y = rowid,family = "Roboto Condensed",
                 label = ages_labels),color = "white", size =5) +
   scale_x_continuous(breaks = c(seq(-375, -25, 50), seq(25, 375, 50)),
                      labels = c(abs(seq(-350, 0, 50)), seq(0, 350, 50)),
                      limits = c(-375, 375)) +
   labs(x=NULL,y=NULL)+ 
   theme_minimal() +
   theme(
     panel.background = element_rect(fill = "#1a1a1a", color = NA),
     panel.grid.minor = element_blank(),
     panel.grid.major.y = element_blank(),
     panel.grid.major.x = element_line(linewidth = 0.15, linetype = "dotted"),
     plot.background = element_rect(fill = "#1a1a1a", color = NA),
     axis.text.y = element_blank(),
     axis.text.x = element_text(family = "Roboto Condensed",color = "white", size = 15))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎关注R语言数据分析指南
  • 加载R包
  • 导入数据
  • 数据清洗
  • 构建绘图数据
  • 数据可视化
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档