ggplot для гистограммы с отрицательными значениями другого цвета

#r #ggplot2

#r #ggplot2

Вопрос:

я хотел бы создать две гистограммы в одном масштабе по оси y, вот моя попытка:

 library(rvest)
library(tidyverse)
library(gridExtra)

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

p1 <- dat %>% 
  filter(between(DiffMedianHourlyPercent,-100,100)) %>% 
  ggplot(aes(x = DiffMedianHourlyPercent))   
  geom_histogram(aes(fill = ..count..), binwidth = 2)

p2 <- dat %>% 
  filter(between(DiffMeanHourlyPercent,-100,100)) %>% 
  ggplot(aes(x = DiffMeanHourlyPercent))   
  geom_histogram(aes(fill = ..count..), binwidth = 2)

grid.arrange(p1, p2, nrow = 1)
  

Кроме того, я бы хотел, чтобы отрицательные значения были другого цвета, похожего на этот график:

правильное

Ответ №1:

Чтобы раскрасить части по-разному для значений>0 и <= 0, вы можете просто изменить fill= эстетику. Например, для одного графика вы можете сделать

 dat %>% 
  filter(between(DiffMedianHourlyPercent,-100,100)) %>% 
  ggplot(aes(x = DiffMedianHourlyPercent))   
  geom_histogram(aes(fill = DiffMedianHourlyPercent>0), binwidth = 2)   
  guides(fill=FALSE)
  

(здесь мы также отключаем легенду)

введите описание изображения здесь

Обратите внимание, что некоторые из выбранных вами ячеек содержат как положительные, так и отрицательные значения. Если вы этого не хотите, вы можете сами управлять расположением ячеек

 dat %>% 
  filter(between(DiffMedianHourlyPercent,-100,100)) %>% 
  ggplot(aes(x = DiffMedianHourlyPercent))   
  geom_histogram(aes(fill = DiffMedianHourlyPercent>0), 
                 breaks=seq(-100, 100, by=2))   
  guides(fill=FALSE)
  

введите описание изображения здесь