R ggplot点打印为每个人显示一个点

R ggplot点打印为每个人显示一个点,r,ggplot2,R,Ggplot2,使用ggplot,我想显示4个四分位数,以百分比表示为400人(每个四分位数100人),作为每个人按性别细分的单独点 library(tidyverse) dat_url <- 'https://gender-pay-gap.service.gov.uk/viewing/download-data/2019' dat <- read_csv(dat_url) a <- dat %>% filter(str_detect(EmployerName,'ZELLIS'

使用ggplot,我想显示4个四分位数,以百分比表示为400人(每个四分位数100人),作为每个人按性别细分的单独点

library(tidyverse)
dat_url <- 'https://gender-pay-gap.service.gov.uk/viewing/download-data/2019'
dat <- read_csv(dat_url) 

a <- dat %>% 
  filter(str_detect(EmployerName,'ZELLIS')) %>% # pick a company
  select(matches("\\bMale\\w+le", perl=TRUE)) %>% # grab male quartiles
  pivot_longer(everything()) %>% 
  extract(name, c('gender', 'quartile'), '(\\bMale)(\\w+\\b)') %>% 
  mutate(men=round(value), women = 100 - men) %>% 
  select(-c(gender, value)) %>% 
  pivot_longer(c('men','women'), names_to='gender', values_to='value') %>% 
  mutate(quartile = str_replace(quartile,'(^\\w+?)(Middle)', '\\2\\1'))
库(tidyverse)
dat_url%#获取男性四分位数
pivot_更长(所有内容())%>%
摘录(姓名,c('性别','四分位数'),'(\\b平均值)(\\w+\\b))%>%
变异(男性=圆形(值),女性=100-男性)%>%
选择(-c(性别,值))%>%
轴长(c('men','women'),名称(U)到='gender',值(U)到='value')%>%
突变(四分位数=str_替换(四分位数,,(^\\w+?)(中间,,\\2\\1'))
样本数据:

a
#一个tibble:8x3
四分位性别值
1低四分位男性39
2低四分位女性61
3名男女平等男子39
4名男女比例较低的妇女61
5中上四分位男性57
6四分之一以上妇女43
7名四分位男性64
8前四分位女性36
看起来有点像这样:
这里有一种可能性。您可以“解开”数据,这样每个点有一行,然后用正方形绘制点。下面是它的样子

a %>% uncount(value) %>% 
  group_by(quartile) %>% 
  mutate(row = (row_number() -1)%/% 10 + 1,
         col = (row_number() -1) %% 10 + 1) %>% 
  ggplot() + 
  aes(col, row, color=gender) + 
  geom_point(shape=15) + 
  facet_grid(~quartile) + 
  coord_equal() + 
  theme(axis.ticks.x=element_blank(), axis.ticks.y=element_blank(),
        axis.text.x=element_blank(), axis.text.y=element_blank(),
        axis.title.x=element_blank(), axis.title.y=element_blank())

太好了,谢谢。语义,但主题(axis.ticks=element\u blank(),axis.text=element\u blank(),axis.title=element\u blank())看起来更清晰
a %>% uncount(value) %>% 
  group_by(quartile) %>% 
  mutate(row = (row_number() -1)%/% 10 + 1,
         col = (row_number() -1) %% 10 + 1) %>% 
  ggplot() + 
  aes(col, row, color=gender) + 
  geom_point(shape=15) + 
  facet_grid(~quartile) + 
  coord_equal() + 
  theme(axis.ticks.x=element_blank(), axis.ticks.y=element_blank(),
        axis.text.x=element_blank(), axis.text.y=element_blank(),
        axis.title.x=element_blank(), axis.title.y=element_blank())