2016-05-21 2 views
0

Я хотел бы использовать ggplot для создания бархарта, но не суммировать наблюдения (категориально) x. Например, вот что я хочу с помощью R системы базового участка:с использованием barplot в ggplot без сгибания по группам

library(ggplot2) 
data <- data.frame(lab = c("a", "b", "b", "c", "a"), 
        val = c(2, 5, 6, 3, 1)) 

barplot(data$val, names.arg = data$lab) 

и вот что я хочу: enter image description here

Однако, если я использую ggplot, это то, что я получаю:

ggplot(data, aes(lab, val)) + geom_bar(stat = "identity") 

enter image description here

Что такое правильный способ использования ggplot, чтобы получить участок я хочу? Благодаря!

+0

Как два бара с той же меткой смысл в любом случае? Чувствует, что что-то не хватает в вашем вопросе или представлении. – Molx

+0

Привет @Molx, это хороший момент. Я только извлек часть, относящуюся к моим вопросам. Полная история состоит в том, что эти a, b, b, a, a, c могут быть случайными для пользователей a, b и c. И есть другая информация о количестве случаев, которую я планирую отображать для визуализации. Это звучит немного более разумно? – firefreezing

ответ

1

Вы можете создать новую переменную вдоль значения lab как x, а затем переместить их.

ggplot(data, aes(as.character(seq_along(lab)), val)) + geom_bar(stat = "identity") + 
    scale_x_discrete("lab", labels = c("1" = "a", "2" = "b", "3" = "b", "4" = "c", "5" = "a")) 

enter image description here

+0

Спасибо @Psidom! Этот трюк решает мою проблему. И немного немного пересмотра для скупого кода немного: мы могли бы использовать 'scale_x_discrete (« lab », labels = data $ lab)', чтобы сохранить некоторое пространство. – firefreezing

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