2016-10-21 3 views
1

Я успешно создал ящик, который отображает счет нескольких кварталов города и покрасил их в соответствии с районом, в котором они принадлежат. Результат выглядит следующим образом:Сортировка коэффициента оси ggplot в соответствии с уровнями другого фактора

library(ggplot2) 

df = read.csv("http://pastebin.com/raw/rpPLwSXn") 

ggplot(df, aes(x = neighbourhood, y = score, fill = district)) + 
    geom_boxplot() + 
    ggtitle("Neighbourhoods' score") + 
    labs(x = "Neighbourhoods", y = "Score", fill = "District") + 
    theme(axis.text.x = element_text(angle = 45, hjust = 1)) 

enter image description here

Это выглядит довольно хорошо, несмотря на то, что вместо сортировки окрестности на оси х по алфавиту (neighbourhood колонке dataframe) Я хотел бы, чтобы они были отсортированы в соответствии с discrict они принадлежат (district переменной на dataframe)

Я прочитал, что я мог бы использовать factor для relevel значения на neighbourhood колонке, но не удалось с этим, так как вектор длина отличается (Есть меньше районов, чем районов)

+0

Итак, для районов, которые находятся в том же районе, как вы их хотите заказать? – Gregor

+0

Первый округ в алфавитном порядке, затем neighbourhoouds в алфавитном порядке, я обновляю описание, как только я получу перед клавиатурой – ccamara

ответ

2

Мне нравится идея фасета в ответ Ульрик в -?, что вероятно, будет самой приятной визуализацией. Для того, чтобы заказать уровни фактор neighbourhood колонки самый простой способ, вероятно, так:

# order the data frame as desired 
df = df[order(df$district, df$neighbourhood), ] 
# set the neighbourhood levels in the order the occur in the data frame 
df$neighbourhood = factor(df$neighbourhood, levels = unique(df$neighbourhood)) 

После уровней в порядке, вы хотите, ось будет следовать.

+0

Спасибо за решение, он отлично поработал! – ccamara

2

Я бы граненый на район вдоль линий facet_wrap (~ район)

См facet_grid и facet_wrap

+0

Можете ли вы показать полный код? Моя наивная интерпретация вашего предложения заключалась в том, что вы хотели добавить '+ facet_grid (~ district)', что было ужасным провалом. На данный момент это скорее комментарий, чем ответ. –

+0

Спасибо за ответ, но украшение не то, что я ищу – ccamara

+0

добавление 'facet_grid (~ district, scale =" free_x ", space =" free ")' работает очень хорошо - некоторые из названий районов не совсем подходят полосы фасета, но это можно было бы проработать с разрывами строк или чем-то еще. – Gregor

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