Как установить количество значений оси Y, отображаемых при гранении - PullRequest
1 голос
/ 10 апреля 2020

У меня есть граненая гистограмма.

 dat <- data.frame(ID = c("A", "A", "B", "B", "C", "C"),
                   A = c("Type 1", "Type 2", "Type 1", "Type 2", "Type 1", "Type 2"),
                   B = c(1, 2, 53, 87, 200, 250))

 ggplot(data = dat, aes(x = A, y = B)) + 
   geom_bar(stat = "identity") +
   facet_wrap(~ID, scales= "free_y")

Как кодировать, чтобы на графике отображались только 3 значения по оси y?

Я пробовал

   +scale_y_continuous(breaks=3)

1 Ответ

0 голосов
/ 10 апреля 2020

Чтобы получить больше контроля над перерывами, вы можете написать свою собственную функцию перерывов. Следующий код дает вам ровно 3 перерыва. Однако этот базовый c подход не обязательно приводит к «красивым» перерывам:

library(ggplot2)

my_breaks <- function(x) { 
  seq(0, round(max(x), 0), length.out = 3) 
} 

my_limits <- function(x) { 
  c(x[1], ceiling(x[2]))
}

# Dataset 2
dat <- data.frame(
  ID = c("A", "A", "A","B", "B", "B", "C", "C", "C"), 
  A = c("Type 1", "Type 2", "Type 3", "Type 1", "Type 2", "Type 3","Type 1", "Type 2", "Type 3"), 
  B = c(1.7388, 4.2059, .7751, .9489, 2.23405, .666589, 0.024459, 1.76190, 0.066678)) 

ggplot(data = dat, aes(x = A, y = B)) + 
  geom_bar(stat = "identity") + 
  facet_wrap(~ID, scales= "free_y") + 
  scale_y_continuous(breaks = my_breaks, limits = my_limits)

# Dataset 1
dat <- data.frame(ID = c("A", "A", "B", "B", "C", "C"),
                  A = c("Type 1", "Type 2", "Type 1", "Type 2", "Type 1", "Type 2"),
                  B = c(1, 2, 53, 87, 200, 250))

ggplot(data = dat, aes(x = A, y = B)) + 
  geom_bar(stat = "identity") + 
  facet_wrap(~ID, scales= "free_y") + 
  scale_y_continuous(breaks = my_breaks, limits = my_limits)

Создано в 2020-04-10 пакетом Представ (v0.3.0)

...