R ggplot点打印为每个人显示一个点
使用ggplot,我想显示4个四分位数,以百分比表示为400人(每个四分位数100人),作为每个人按性别细分的单独点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'
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())