2010-06-30 3 views
6

Я подгоняю модель счета к вектору фактических данных и теперь хотел бы построить фактическую и предсказанную как сгруппированную (уклоненную) гистограмму. Поскольку это модель счета, данные дискретны (X = x от 0 до 317). Поскольку я подгоняю модель, у меня есть только данные с таблицами для прогнозируемых значений.Сгруппированная гистограмма с ggplot2 и уже сведенными в таблицу данными

Вот как мой первоначальный кадр данных выглядит:

actual predicted 
1 3236 3570.4995 
2 1968 1137.1202 
3 707 641.8186 
4 302 414.8763 
5 185 285.1854 
6 104 203.0502 

Я преобразовал данные, которые будут построены с ggplot2:

melted.data <- melt(plot.data) 
melted.data$realization <- c(rep(0:317, times=2)) 
colnames(melted.data)=c('origin','count','realization') 

Так что мой кадр данных теперь выглядит следующим образом:

head(melted.data) 
    origin count realization 
1 actual 3236   0 
2 actual 1968   1 
3 actual 707   2 
4 actual 302   3 
5 actual 185   4 
6 actual 104   5 
> tail(melted.data) 
     origin  count realization 
631 predicted 1.564673e-27   312 
632 predicted 1.265509e-27   313 
633 predicted 1.023552e-27   314 
634 predicted 8.278601e-28   315 
635 predicted 6.695866e-28   316 
636 predicted 5.415757e-28   317 

Когда я пытаюсь его нарисовать (опять же, я хотел бы иметь фактический и прогнозируемый счет, который уже является вкладкой нерегулируемом в data-- по дискретной реализации), я даю команду:

ggplot(melted.data, stat="identity", aes(x=realization, fill=origin)) + geom_bar(position="dodge") 

Тем не менее, похоже параметр стата не нравится ggplot2, так как я не получить высоту правильного бара (который будет те из переменной «count»).

Любые идеи?

Thanks,

Roberto.

ответ

7

Вам нужны y-значения в карточке aes, если вы используете stat_identity (столбец count). Попробуйте следующее:

ggplot(melted.data, aes(x=realization, y=count, fill=origin)) + 
     stat_identity(position="dodge", geom="bar") 

или

ggplot(melted.data, aes(x=realization, y=count, fill=origin)) + 
     geom_bar(position="dodge", stat="identity") 
+0

Да, просто добавьте '+ xlim (Xmin, Xmax)' (с соответствующими значениями для Xmin и Xmax) – rcs

+0

Великий, спасибо так много! – Roberto

+0

@rcs: Спасибо за этот ответ. Используя обозначение переменной выше, данные, которые я рисую, имеют различное количество значений «origin». Когда в «реализации» присутствует только одно значение «origin», создается один «жирный» бар. Когда присутствуют два значения «начала», появляются два более узких стержня и т. Д. Существует ли способ обеспечить равномерную ширину стержней? – SabreWolfy

Смежные вопросы