Ширина столбца сгруппированного столбчатого графика неравномерна из-за отсутствия данных - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь отобразить сгруппированную гистограмму для моего набора данных, однако из-за того, что у некоторых месяцев нет данных (нет дохода), ширина столбца отображается как неравная, и я надеялся, что ширина столбца будет одинаковой независимо от того, в некоторых штатах нет дохода. Обратите внимание на то, как гистограмма сгруппирована по январю, что-то подобное по всем месяцам, хотя в других штатах нет дохода (я бы хотел, чтобы они были распределены, если в некоторых штатах нет дохода). Любая помощь будет высоко ценится, спасибо.

library(ggplot2)
plot = ggplot(Checkouts, aes(fill=Checkouts$State, x=Checkouts$Month, y=Checkouts$Income)) + 
geom_bar(colour = "black", stat = "identity") 

My Bar Plot

Таблица заказов / данные

Ответы [ 2 ]

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

Вы ищете position_dodge2 (preserve = "single") (https://ggplot2.tidyverse.org/reference/position_dodge.html).

library(ggplot2)
plot = ggplot(Checkouts, aes(fill = State, x = Month, y= Income)) + 
  geom_bar(colour = "black", stat = "identity", 
           position = position_dodge2(preserve = "single")) 

Кроме того, вам не нужно указывать столбцы во фрейме данных с помощью $ in ggplot (). Например, Checkouts $ State можно заменить на State.

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

Это можно сделать двумя способами.

  1. Если вы используете последнюю версию ggplot2 (я полагаю, из 2.2.1), в функции position_dodge есть параметр preserve, который сохраняет вертикальное положение и регулирует только горизонтальное положение. Вот код для этого.

Код:

import(ggplot2)
plot = ggplot(Checkouts, aes(fill=Checkouts$State, x=Checkouts$Month, y=Checkouts$Income)) + 
geom_bar(colour = "black", stat = "identity", position = position_dodge(preserve = 'single'))
  1. Другим способом является предварительное вычисление и добавление фиктивных строк для каждого из пропущенных. использование table является лучшим решением.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...