Wykres słupkowy ggplot z uporządkowaną według aspektu kolejnością kategorii

Widziałem wiele pytań (często związanych zPaski porządku w wykresie słupkowym ggplot2) o tym, jak (ponownie) zamawiać kategorie na wykresie słupkowym.

To, czego potrzebuję, jest inne, ale nie znalazłem dobrego sposobu, aby to zrobić: mam wieloaspektowy wykres słupkowy i chcę zamówić oś x dla każdego aspektu niezależnie, zgodnie z inną zmienną ( w moim przypadku ta zmienna jest po prostu samą wartością y, tj. chcę po prostu, aby słupki przechodziły w coraz większej długości w każdym aspekcie).

Prosty przykład, na przykładPaski porządku w wykresie słupkowym ggplot2:

df <- data.frame(name=c('foo','bar','foo','bar'),period=c('old','old','recent','recent'),val=c(1.23,2.17,4.15,3.65))
p = ggplot(data = df, aes(x = reorder(name, val), y = val))
p = p + geom_bar(stat='identity')
p = p + facet_grid(~period)
p

Otrzymujemy następujące informacje:

Tym, czego chcę, jest:

questionAnswers(4)

yourAnswerToTheQuestion