Как сделать гистограмму с накоплением, используя ggplot для представления столбца/типа почвы

У меня есть такие данные:

SampleID  From  To   SampleDepth UnitCode  Gravel_perc Sand_perc Fines_perc
2007-01   0.00 0.2       0.100     Soil          25        70          4
2007-02   0.20 0.4       0.300     Clay          45        45          5
2007-03   0.40 0.6       0.500     Silt          40        50          5
2007-04   1.12 1.2       1.160     Soil          45        10         40
2007-05   2.31 2.5       2.405     Clay          10        30         50

Я хочу сделать гистограмму с накоплением для UnitCode по отношению к SampleDepth, используя разные цвета. Пример — (от 0 до 0,2 м -> Почва -> Синий), (от 0,2 до 0,4 -> Глина -> зеленый), (от 0,4 до 0,6 -> Ил -> розовый) и т. д. Может ли кто-нибудь помочь мне в этом? Также я предоставил изображение, чтобы показать, что я имею в виду. Для разных интервалов глубины ---> разные цвета для представления типа почвы.

Пример изображения:

введите здесь описание изображения

Благодарю вас


person Rupesh    schedule 05.04.2016    source источник
comment
где изображение? также попробуйте поместить код в раздел кода для лучшей читабельности. добро пожаловать в СО!   -  person Zahiro Mor    schedule 05.04.2016
comment
Привет, Извините, я впервые задаю вопрос, и все немного странно. Я пытался прикрепить изображение, но оно не появилось. я попробую снова   -  person Rupesh    schedule 05.04.2016
comment
как группируются SampleDepth?   -  person Vincent Bonhomme    schedule 05.04.2016
comment
Глубина выборки представляет собой среднее значение From и To. Так что в основном это расширение образцов в земле   -  person Rupesh    schedule 05.04.2016
comment
Что идет по оси X вашего графика? Или вам нужен только один бар?   -  person Gregor Thomas    schedule 05.04.2016
comment
Привет, Грегор, я просто хочу один батончик. Ось Y — это SampleDepth.   -  person Rupesh    schedule 05.04.2016
comment
Вы уверены, что хотите использовать ggplot? Пакет aqp имеет расширенную функциональность для построения данных профиля почвы. Например. см. r-project.org/conferences /useR-2011/TalkSlides/Содействие/   -  person dww    schedule 05.04.2016
comment
Привет! Большое спасибо за ваш отзыв. Я не знал о пакете aqp, однако он кажется действительно полезным, но в настоящее время да, я хотел сделать это с помощью ggplot.   -  person Rupesh    schedule 05.04.2016


Ответы (1)


Это должно работать:

ggplot(dat, aes(x = factor(1), y = -SampleDepth, fill = UnitCode)) +
    geom_bar(stat = "identity") +
    scale_fill_manual(breaks = c("Clay", "Silt", "Soil"),
                      c("darkolivegreen3", "pink", "steelblue2"))

введите здесь описание изображения

Используя эти данные:

dat = structure(list(SampleID = structure(1:5, .Label = c("2007-01", 
"2007-02", "2007-03", "2007-04", "2007-05"), class = "factor"), 
    From = c(0, 0.2, 0.4, 1.12, 2.31), To = c(0.2, 0.4, 0.6, 
    1.2, 2.5), SampleDepth = c(0.1, 0.3, 0.5, 1.16, 2.405), UnitCode = structure(c(3L, 
    1L, 2L, 3L, 1L), .Label = c("Clay", "Silt", "Soil"), class = "factor"), 
    Gravel_perc = c(25L, 45L, 40L, 45L, 10L), Sand_perc = c(70L, 
    45L, 50L, 10L, 30L), Fines_perc = c(4L, 5L, 5L, 40L, 50L)), .Names = c("SampleID", 
"From", "To", "SampleDepth", "UnitCode", "Gravel_perc", "Sand_perc", 
"Fines_perc"), class = "data.frame", row.names = c(NA, -5L))
person Gregor Thomas    schedule 05.04.2016
comment
Привет Грегор, большое спасибо за ваш ответ. Есть ли способ вручную изменить цвет? В настоящее время кажется, что цвет генерируется автоматически. Это потому, что я хочу дать подходящую цветовую классификацию для конкретных типов почвы. Спасибо - person Rupesh; 05.04.2016
comment
Обновлено с цветами. - person Gregor Thomas; 05.04.2016
comment
Большое спасибо за ваш ответ. Это очень помогает. :-) - person Rupesh; 05.04.2016
comment
Есть ли способ контролировать ширину прямоугольника (полосы), помимо настройки области построения? - person user2955884; 17.09.2018
comment
@user2955884 user2955884 конечно, смотрите ?geom_bar и используйте аргумент width. - person Gregor Thomas; 17.09.2018
comment
Но это относительно. В моем случае категории (т. е. глина, ил, почва...) не все присутствуют на каждой гистограмме, и некоторые категории имеют более длинные имена, чем другие. Как следствие, прямоугольник становится уже, если легенда становится шире. Я хочу установить ширину прямоугольника и, если легенда станет шире, просто увеличить размер графика, сохраняя прямоугольники состоящего размера. К настоящему времени я просто опускаю легенду и пишу метки на графике. - person user2955884; 18.09.2018
comment
В этом может помочь пакет cowplot. См., например, здесь и здесь или с помощью gtable здесь и здесь для выравнивания графиков в обоих направлениях. Если это не ответ на ваш вопрос, я предлагаю задать новый вопрос. - person Gregor Thomas; 18.09.2018
comment
Спасибо. Еще один: использование (стандартных) текстур очень распространено в почвоведении и геологии, есть ли способ их добавить? - person user2955884; 18.09.2018
comment
Найдите в теге [ggplot2] что-то вроде добавления текстуры к графику. - person Gregor Thomas; 19.09.2018