根据另一个因素的水平对ggplot轴的因子进行排序

时间:2016-10-21 19:26:54

标签: 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))

enter image description here

尽管不是按字母顺序排序x轴上的邻域(数据框上的neighbourhood列),但我希望它们根据它们所属的区分进行排序({{1数据框上的变量)

我读过我可以使用district来重新定位factor列上的值,但由于向量长度不同(区域比邻域少),因此没有成功/ p>

2 个答案:

答案 0 :(得分:3)

我喜欢Ulrik的答案中的方面思想 - 这可能是最好的可视化。要订购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))

在级别按照您想要的顺序后,轴将跟随。

答案 1 :(得分:2)

我会在facet_wrap(〜district)

的区域面对

参见?facet_grid和?facet_wrap