Уменьшить расстояние между группами полос в ggplot2

Мне не удалось удалить лишние пробелы по бокам групп полос в geom_plot.

Я хотел бы сделать то, чего добился здесь Роланд: Удалите пробелы между полосами ggplot2, но когда Я пытаюсь реализовать его решение и получаю сообщение об ошибке «Предупреждение: geom_bar() больше не имеет параметра binwidth. Используйте вместо этого geom_histogram()».

Я добавил эту строку кода к своему графику (пробуя разную ширину):

  geom_histogram(binwidth = 0.5) +

который возвращает «Ошибка: stat_bin () нельзя использовать с эстетикой y». и никакого сюжета.

Данные:

mydf<- data.frame(Treatment = c("Con", "Con", "Ex", "Ex"),
             Response = rep(c("Alive", "Dead"), times=2),
             Count = c(259,10,290,21))

 aPalette<-c("#009E73", "#D55E00")

Участок:

example<-ggplot(mydf, aes(factor(Response), Count, fill = Treatment)) + 
  geom_bar(stat="identity",position = position_dodge(width = 0.55), width = 
  0.5) + 
  scale_fill_manual(values = aPalette, name = "Treatment") + #legend title
  theme_classic() +
  labs(x = "Response", 
  y = "Count") + 
  scale_y_continuous(breaks = c(0,50,100,150,200,250,275), expand = c(0,0), 
  limits = c(0, 260)) +
  theme(legend.position = c(0.7, 0.3)) +
  theme(text = element_text(size = 15)) #change all text size

  example

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

Примечание. Я не знаю, почему я получаю «Предупреждение: удалена 1 строка, содержащая пропущенные значения (geom_bar)». но меня это не беспокоит, потому что это не происходит с моими фактическими данными ** Edit re: note - это происходит потому, что я установил предел для оси Y ниже максимального значения для столбца, который был удален. Я не собираюсь переходить на код, поэтому мне не нужно перерисовывать свою фигуру, но меняю

limits = c(0, 260) 

to

limits = c(0, 300)

покажет все полосы. На случай, если у кого-то была аналогичная проблема. Я найду сообщение, посвященное этой проблеме, и сделаю это редактирование более кратким, когда смогу связать ответ


person Emily    schedule 01.03.2018    source источник
comment
Не могли бы вы привести воспроизводимый пример? https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example   -  person bVa    schedule 01.03.2018


Ответы (1)


Простите меня, если я полностью пропустил то, что вы пытаетесь здесь сделать, но единственная причина, по которой ggplot включает так много белого пространства, заключается в том, что вы ограничили полосы до определенной ширины и увеличили размер графика. Пустое пространство на графике является результатом ширины полосок и ширины графика.

Используя исходный график ...  orig graph

Мы заметили много пробелов, но вы оба сделали ячейки маленькими, а график - широким. Подумайте о пространстве как о компромиссе между ячейками и пробелами. Нелогично ожидать широкого графа с маленькими ячейками и без пробелов. Чтобы исправить это, мы можем либо уменьшить размер графика, либо увеличить размер бина.

Сначала мы увеличиваем размер корзины до нормального, удаляя ваши ограничения. Что выглядит смешно ....

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

Но, посмотрев на ссылку Удалить пробел между полосами ggplot2, которую вы включили выше, он только удалил ограничения и ограничил ширину. Это приведет к аналогичному графику ...

похожий график

Включая график по вашей ссылке выше ....  введите описание изображения здесь

И снятие всех ваших ограничений ....  введите описание изображения здесь

    example<-ggplot(mydf, aes(factor(Response), Count, fill = Treatment)) + 
  geom_bar(stat="identity",position = position_dodge()) +
  scale_fill_manual(values = aPalette, name = "Treatment") +
  theme_bw() +
  labs(x = "Response", y = "Count")

example

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

person Michael Cantrall    schedule 03.03.2018
comment
Я растягивал свои сюжеты, чтобы шрифт был большим для презентаций. Не могу поверить, что совершил такую ​​глупую ошибку, но спасибо за объяснение !! - person Emily; 06.03.2018
comment
Эмили - размер шрифта мы можем изменить! - person Michael Cantrall; 06.03.2018
comment
Я сделал это с помощью theme (text = element_text (size = 45)) # (изменить весь размер текста), но теперь я лучше понимаю, как использовать окно просмотра графика. Спасибо за терпение и помощь в таком простом решении! - person Emily; 06.03.2018