Reputation: 1235
I have a facet problem. I want to split my data using the 'region' variable in my petty dataset, and reorder by 'andel'. I've tried to use reorder_within
(tidytext) and it does order the bars correctly but in every facet I get every tick label I have in the dataset, 18 in total, although I have only six observations per group. What am I missing here?
Help would be very appreciated.
This is my data.
region FodelseLandNamn n andel
1 Skåne län Sydost-Asien 2223 0.0954
2 Skåne län Södra Europa 3188 0.137
3 Skåne län Södra och Central-Asien 2353 0.101
4 Skåne län Västra Asien 9037 0.388
5 Skåne län Östra Afrika 1148 0.0493
6 Skåne län Östra Europa 2017 0.0866
7 Stockholms län Syd-Amerika 3391 0.0767
8 Stockholms län Sydost-Asien 3275 0.0741
9 Stockholms län Södra och Central-Asien 6029 0.136
10 Stockholms län Västra Asien 12433 0.281
11 Stockholms län Östra Afrika 5990 0.136
12 Stockholms län Östra Europa 3500 0.0792
13 Västra Götalands län Sydost-Asien 2337 0.0966
14 Västra Götalands län Södra Europa 2407 0.0994
15 Västra Götalands län Södra och Central-Asien 3072 0.127
16 Västra Götalands län Västra Asien 7085 0.293
17 Västra Götalands län Östra Afrika 4475 0.185
18 Västra Götalands län Östra Europa 1215 0.0502
ggplot(df_desk1, aes(reorder_within(FodelseLandNamn, andel, region), andel, fill = region)) +
geom_bar(stat = "identity") +
coord_flip() +
scale_x_reordered() +
facet_grid(region ~., scales = "free_x")
/Henrik
Upvotes: 3
Views: 3419
Reputation: 9485
If I've undestood well, you can do this:
library(tidyverse)
ggplot(df_desk1, aes(reorder_within(FodelseLandNamn, andel, region), andel, fill = region)) +
geom_bar(stat = "identity") +
coord_flip() +
scale_x_reordered() +
facet_grid(region ~., scales = "free")
Using these.
Upvotes: 1
Reputation: 2581
I can't comment on s_t's solution (I'm lacking rep), but you need to change the scales = "free_x"
to either scales = "free"
or scales = "free_y"
. ggplot cleans up the extra levels then.
Upvotes: 2