ggplot2 Неравный размер стека geom_bar

У меня возникла проблема с использованием geom_bar для сравнения двух методов классификации образцов, где я хочу показать, что одни и те же образцы по классификатору A могут привести к другим результатам, чем по классификатору B.

Пример того, как я пытался это сделать, выглядит следующим образом:

library("ggplot2")
dfr <- data.frame(class=sample(LETTERS[1:5], 10, replace=TRUE), 
                  classifier=rep(c("A", "B"), c(5, 5)), 
                  id=rep(paste("X_", 1:5, sep = ""), 2)) 

Здесь у нас есть data.frame, дающий нам информацию о классификаторе, классе и идентификаторах образцов.

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

ggplot(dfr, aes(x = classifier, fill = class)) + 
  geom_bar(stat="bin")

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

ggplot(dfr, aes(x=classifier, y=as.factor(id), fill=class)) +
  geom_bar(stat="identity", colour="WHITE")

Вот где моя проблема. Как вы можете видеть, по какой-то причине площадь сложенных секций намного больше, чем дальше вы смотрите на панель, и я не знаю, как заставить размер быть одинаковым.

Любые рекомендации относительно того, как лучше всего исправить это, чтобы области разделов были равными, а метки идентификаторов, примыкающие к их назначенному разделу, будут высоко оценены!


person Dominic Pearce    schedule 13.07.2015    source источник
comment
Добро пожаловать в СО! geom_bar пытается выполнить агрегирование, которое допустимо только для числовых данных. В вашем случае вместо этого будет работать + geom_tile(colour = "white")?   -  person tonytonov    schedule 13.07.2015
comment
Так просто! Спасибо за быстрый ответ, и он отлично работает с моими фактическими данными. Доминик   -  person Dominic Pearce    schedule 13.07.2015


Ответы (1)


Обернув мой комментарий в ответ:

ggplot(dfr, aes(x = classifier, y = id, fill = class)) +
  geom_tile(colour = "white")

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

person tonytonov    schedule 13.07.2015