大数跨境
0
0

ggplot2优雅绘制金子塔图

ggplot2优雅绘制金子塔图 R语言数据分析指南
2023-08-14
0

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

本节来介绍如何使用「ggplot2」来绘制年龄分布金子塔图,下面小编就通过一个案例来进行展示数据为随意构建无实际意义仅作图形展示用,希望各位观众老爷能够喜欢,「数据+代码已经上传2023VIP群,加群的观众老爷请自行下载」

关注下方公众号下回更新不迷路

加载R包

library(tidyverse)
library(ggtext)
library(patchwork)
library(showtext)

导入数据

age_gaps <- readr::read_csv('age_gaps.txt')

数据清洗

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)

构建绘图数据

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()

数据可视化

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, -2550), seq(2537550)),
                      labels = c(abs(seq(-350050)), seq(035050)),
                      limits = c(-375375)) +
   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))

本节介绍到此结束,有需要学习个性化数据可视化的朋友,欢迎到小编的「淘宝店铺」 「R语言数据分析指南」购买「2023年度会员文档」同步更新中「售价149元」,内容主要包括各种「高分论文的图表分析复现以及一些个性化图表的绘制」均包含数据+代码;按照往年数据小编年产出约在150+以上

购买后微信发小编订单截图即邀请进新的会员交流群,小编的文档为按年售卖,只包含当年度的「除系列课程外」的文档,有需要往年文档的朋友也可下单购买,需要了解更多信息的朋友欢迎交流咨询。

淘宝扫一扫

2023会员群案例展示


【声明】内容源于网络
0
0
R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
内容 1180
粉丝 0
R语言数据分析指南 R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
总阅读551
粉丝0
内容1.2k