Создание участка с разбивкой по областям с использованием ggplot2

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

df <- data.frame(PopDen = c( 0.002279892, 0.002885407, 0.004291351, 0.002457731, 0.006631572, 0.007578882, 0.004465446, 0.007436628, 0.009001456, 0.006951703, 0.003602076, 0.005695585, 0.005819783, 0.007412274, 0.004931548, 0.006257411, 0.008635908, 0.005438558, 0.002251421,0.006438558), DomArea = c( 253500, 135270, 197180, 131590, 142210, 166920, 125640, 184600, 139940, 126280, 127760, 190940, 133440, 143510, 117260, 69340, 143620, 127480, 181970,164180), PR_Cat = c( "High", "High", "Low", "Low", "Low", "Low", "Low", "Low", "High", "High", "Medium", "Medium", "Medium", "Low", "Low", "Medium", "Medium", "Low", "Low","Low") ) p <- ggplot(df, aes(PopDen, order(DomArea), colour = PR_Cat)) p + geom_area(aes(colour = PR_Cat, fill= PR_Cat), position = 'stack') 

Однако я не понимаю, как складывать области друг над другом; в настоящий момент они перекрываются. Я предполагаю, что мне нужен аргумент position = 'stack' , но график выглядит одинаково, независимо от того, включен он или нет.

Кроме того, можно ли заказать DomArea по одной из категорий в PR_Cat или мне нужно будет реорганизовать мои данные?

Я не уверен, что вы здесь PopDen , но разве вы не хотите PopDen по оси y, а не по оси x ? Вы можете заказать DomArea по каждой категории PR_Cat используя ddply из пакета plyr , а затем plyr следующие действия: EDIT Я понял, что вы, вероятно, хотите, чтобы график был уложен в порядке Low, Medium High , поэтому нам нужно сначала заставить это заказывая по коэффициенту PR_Cat , делая:

 df$PR_Cat <- ordered( df$PR_Cat, levels = c('Low', 'Medium', 'High')) 

Теперь создайте столбец ddply используя ddply :

 df <- ddply(df, .(PR_Cat), transform, DomAreaByCat = order(DomArea)) 

Ваш df будет выглядеть так:

 > df PopDen DomArea PR_Cat DomAreaByCat 1 0.004291351 197180 Low 8 2 0.002457731 131590 Low 5 3 0.006631572 142210 Low 9 4 0.007578882 166920 Low 2 5 0.004465446 125640 Low 3 6 0.007436628 184600 Low 7 7 0.007412274 143510 Low 11 8 0.004931548 117260 Low 4 9 0.005438558 127480 Low 10 10 0.002251421 181970 Low 6 11 0.006438558 164180 Low 1 12 0.003602076 127760 Medium 4 13 0.005695585 190940 Medium 1 14 0.005819783 133440 Medium 3 15 0.006257411 69340 Medium 5 16 0.008635908 143620 Medium 2 17 0.002279892 253500 High 4 18 0.002885407 135270 High 2 19 0.009001456 139940 High 3 20 0.006951703 126280 High 1 

И тогда вы можете сделать сложный участок:

 p <- ggplot(df, aes( DomAreaByCat, PopDen)) p + geom_area(aes(colour = PR_Cat, fill= PR_Cat), position = 'stack') 

alt text

  • Как получить максимальное значение по группе
  • ggplot2: изменение порядка стеков на гистограмме
  • Выберите несколько столбцов в data.table по их числовым индексам
  • Сплит скрипка с ggplot2
  • Как вы используете «<< -» (присвоение области охвата) в R?
  • Изменить кадр данных с тремя столбцами на матрицу («длинный» до «широкого» формата)
  • Найдите K ближайших соседей, начиная с матрицы расстояния
  • Чтение нескольких файлов в несколько кадров данных
  • R раунд до ближайшего .5 или .1
  • Проверьте, является ли число целым
  • Как подмножить матрицу в один столбец, сохранить тип данных матрицы, поддерживать имена строк / столбцов?
  • Давайте будем гением компьютера.