#r #ggplot2
#r #ggplot2
Вопрос:
Я успешно создал прямоугольную диаграмму, которая отображает оценку нескольких районов города, и раскрасил их в соответствии с районом, к которому они принадлежат. Результат выглядит следующим образом:
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))
Это выглядит довольно хорошо, несмотря на тот факт, что вместо сортировки окрестностей по оси x в алфавитном порядке ( neighbourhood
столбец в dataframe) Я бы хотел, чтобы они были отсортированы в соответствии с тем, к какому разделу они принадлежат ( district
переменная в dataframe)
Я читал, что я мог бы использовать factor
для сопоставления значений в neighbourhood
столбце, но это не удалось, поскольку длина вектора отличается (районов меньше, чем окрестностей)
Комментарии:
1. Итак, для районов, которые находятся в одном районе, как вы хотите, чтобы они были упорядочены?
2. Сначала район в алфавитном порядке, затем соседние города в алфавитном порядке, я обновлю описание, как только сяду за клавиатуру
Ответ №1:
Мне нравится идея фасета в ответе Ульрика — это, вероятно, будет самая приятная визуализация. Для упорядочения уровней фактора в 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))
После того, как уровни будут расположены в нужном порядке, за ними последует ось.
Ответ №2:
Я бы разделил округ по линиям facet_wrap (~ district)
Видите?facet_grid и?facet_wrap
Комментарии:
1. Можете ли вы показать полный код? Моя наивная интерпретация вашего предложения заключалась в том, что вы хотели добавить
facet_grid(~district)
, что было ужасным сбоем. На данный момент это больше похоже на комментарий, чем на ответ.2. Спасибо за ответ, но огранка — это не то, что я ищу
3. добавление
facet_grid(~ district, scales = "free_x", space = "free")
работает довольно хорошо — некоторые названия районов не совсем вписываются в полосы фасетов, но это можно обойти с помощью разрывов строк или чего-то еще.