ggplot2 - Как получить сопоставления бинов двух разных гистограмм? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть следующая гистограмма, которая использует ширину бина по умолчанию,

x <- rnorm(100)
p1 <- ggplot() + geom_histogram(aes(x=x))

Я хочу, чтобы следующая гистограмма имела те же ячейки, что и p1,

x <- rnorm(100)/2
p2 <- ggplot() + geom_histogram(aes(x=x))

Другими словами, я хочу, чтобы p2 использовал те же ячейки по умолчанию, что и p1. Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Что мы можем сделать, это извлечь разрывы из первого сюжета:

x1 <- rnorm(100)
p1 <- ggplot() + 
  geom_histogram(aes(x = x1))

breaks <- unique(unlist(ggplot_build(p1)$data[[1]][, c("xmin", 'xmax')]))

x2 <- rnorm(100) / 2
p2 <- ggplot() + 
  geom_histogram(aes(x = x2), breaks = breaks)

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

enter image description here

0 голосов
/ 31 октября 2018

Я думаю, что самый простой способ форсировать одни и те же ячейки - это огранить участки (потому что просто установка binwidth может запустить ячейки в разных местах на двух разных участках, и для ручной установки пределов с помощью boundary и breaks потребуется должно быть сделано для конкретных данных, которые могут быть раздражающими). Кроме того, это делает графики напрямую сопоставимыми как по осям, так и по лоткам, что, по-видимому, является точкой размещения их в первую очередь на тех же лотках

library(tidyverse)
tbl <- tibble(
  x = rnorm(100),
  y = rnorm(100) / 2
)
tbl %>%
  gather(var, val, x, y) %>%
  ggplot() +
  geom_histogram(aes(x = val)) +
  facet_wrap(~var)
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Создано в 2018-10-31 пакетом Представ (v0.2.0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...