ggplot同步y轴刻度

问题描述

我想使用gridExtra在相同比例的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 = DiffMedianHourlyPercent<=0),breaks=seq(-100,100,by=2)) +
  guides(fill=FALSE)
p1 <- p1 + scale_fill_brewer(palette="Set2") + 
  theme_bw() +
  theme(legend.position="none")

p2 <- dat %>% 
  filter(between(DiffMeanHourlyPercent,100)) %>% 
  ggplot(aes(x = DiffMeanHourlyPercent)) + 
  geom_histogram(aes(fill = DiffMeanHourlyPercent<=0),by=2)) +
  guides(fill=FALSE)
p2 <- p2 + scale_fill_brewer(palette="Set2") + 
  theme_bw() +
  theme(legend.position="none")
p2

grid.arrange(p1,p2,nrow = 1)
从图y轴上看到

的比例不同...

enter image description here

解决方法

我建议您尝试使用facet_wrap()方法。您的代码正在创建其他数据以创建不同的图。您可以设置最佳管线,以便根据所需变量对数据进行整形,并使用公共y轴获得所需的图。这里的代码:

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

#Plot
G1 <- dat %>% 
  select(c(DiffMedianHourlyPercent,DiffMeanHourlyPercent)) %>%
  pivot_longer(everything()) %>%
  #Filter
  group_by(name) %>%
  filter(between(value,-100,100)) %>%
  ggplot(aes(x = value)) + 
  geom_histogram(aes(fill = value<=0),breaks=seq(-100,100,by=2)) +
  guides(fill=FALSE)+
  scale_fill_brewer(palette="Set2") + 
  theme_bw() +
  theme(legend.position="none")+
  facet_wrap(.~name,scales = 'free_x')

输出:

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...