2014-10-28 5 views
1

Скажем, у меня есть dataframe, который имеет только 2 столбца, var и fill (оба фактора). Создать гистограмму из этого, используяggplot сортировка гистограммы при переупорядочивании невозможна

ggplot(df, aes(var, fill=fill)) + geom_bar() 

причина, почему я делаю это потому, что мне нужно многослойную гистограмму. Значения y, которые являются значениями различных значений в var, неявно вычисляются ggplot. Все это прекрасно.

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

Как это сделать?

EDIT: Образец данных и сюжет (я хочу, чтобы участок для сортировки, так что я вижу NA первых, SA рядом и Европа в прошлом)

> df = data.frame(var=c("NA","EU","SA","NA","SA","NA"),fill=c("f1","f2","f2","f1","f2","f2")) 
> df 
    var fill 
1 NA f1 
2 EU f2 
3 SA f2 
4 NA f1 
5 SA f2 
6 NA f2 
> ggplot(df, aes(x=var, fill=fill)) + geom_bar() 

enter image description here

+0

Можете ли вы предоставить образец данные, если вы можете? – jazzurro

+0

Отредактированный мой вопрос с образцом данных и сюжет. – Goutham

ответ

1

Вы должны создавать упорядоченные фактор, чтобы сделать это , В аргументе levels вы можете изменить порядок по своему усмотрению. Когда вы пишете ordered = TRUE будет сохранять порядок

df$var <- factor(df$var,levels = c("SA","NA","EU"),ordered = TRUE) 
ggplot(df, aes(x=var, fill=fill)) + geom_bar() 

enter image description here

+0

Все еще ставит NA посередине. Я хочу NA с самого начала, затем SA и EU. – Goutham

+0

в первой строке кода в параметрах уровней измените порядок, как 'levels = c (" NA "," SA "," EU ")' вы можете играть с заказом – Koundy

+0

Извините, пропустил это. Это должно сделать это, спасибо. – Goutham

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