2016-11-09 4 views
0

Я пытаюсь сделать участок участка с различными областями, наложенными друг на друга, а не сложены.ggplot2 geom_area области наложения друг напротив друга

У меня есть dataframe, который выглядит следующим образом:

 r variable  value 
1 45.0 Cat 1 4.057250e+03 
2 52.5 Cat 1 3.537323e+03 
3 56.1 Cat 1 3.429861e+03 
4 57.3 Cat 1 3.395330e+03 
5 57.6 Cat 1 3.389983e+03 
6 45.0 Cat 2 4.545455e-03 
7 52.5 Cat 2 4.509400e+01 
8 56.1 Cat 2 3.525753e+02 
9 57.3 Cat 2 4.185094e+02 
10 57.6 Cat 2 4.336622e+02 
11 45.0 Cat 3 4.074432e+03 
12 52.5 Cat 3 3.630504e+03 
13 56.1 Cat 3 3.919076e+03 
14 57.3 Cat 3 3.957039e+03 
15 57.6 Cat 3 3.970083e+03 
16 45.0 Cat 4 1.718182e+01 
17 52.5 Cat 4 9.318133e+01 
18 56.1 Cat 4 4.892154e+02 
19 57.3 Cat 4 5.617087e+02 
20 57.6 Cat 4 5.801001e+02 

Я пытаюсь получить площадь участков для каждой категории. Мой код, который:

p <- ggplot(reshaped_data, aes(r, value)) 
p <- p + labs(x = "X Axis", y = "Y Axis") + ggtitle(title) 
p <- p + geom_area(aes(colour = variable, fill= variable), position = 'stack') 
p 

И результат я получаю выглядит следующим образом: Generated Graph

Как я могу сделать так, что графы площадь не укладываются друг на друга, но самый маленький накладываются перед большими?

Благодаря

+1

'geom_area (position =" identity ", ...)' – Nate

+0

Это потрясающе. Спасибо, Натан! Есть ли способ сделать это автоматически сортировать порядок внешнего вида? –

ответ

1

Как Nathan писал вам придется использовать geom_area(position = "identity", ...)

Но перед этим вы должны изменить порядок уровней переменной:

df$variable <- factor(df$variable, unique(df[order(df$value, decreasing = T),"variable"])) 

или

df$variable <- reorder(df$variable, df$value, function(x) -max(x)) 
+0

Вот и все! Это именно то, что я искал. Спасибо, Юбер! –

1

Использование tidyverse:

library(forcats) 
p + geom_area(aes(colour = variable, 
fill= fct_reorder(variable, value, .desc = TRUE)), position = 'identity') 

Удалите .desc = TRUE, если он делает противоположное тому, что вы хотите.

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