对于 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'))
示例数据:
a
# A tibble: 8 x 3
quartile gender value
<chr> <chr> <dbl>
1 LowerQuartile men 39
2 LowerQuartile women 61
3 LowerMiddleQuartile men 39
4 LowerMiddleQuartile women 61
5 UpperMiddleQuartile men 57
6 UpperMiddleQuartile women 43
7 TopQuartile men 64
8 TopQuartile women 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())
关于r - ggplot dotplot 为每个人显示一个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64021131/