используя этот воспроизводимый пример tibble
# install and attach packages
if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse, dplyr, ggplot2)
# Create example dataset (tib1)
tib1 = tibble(location = c("loc1", rep(c("loc1", "loc2"), 8), rep("loc2",2)),
drill = sort(c(1, rep(1:4, 4),4, 4)),
thickness = c(20, 34, 99, 67, 29, 22, 53, 93, 64, 98, 76, 42, 49, 23, 11, 74,
19, 50, 40),
soiltype = c("gravel", rep( c("sand", "loam", "clay"),5 ), "sand", "gravel", "clay")) %>%
arrange(location, drill)
tib1 <- tib1 %>% group_by(location, drill) %>%
mutate(order = row_number(),
bottom_of_layer = cumsum(thickness),
top_of_layer = bottom_of_layer-thickness) %>%
ungroup %>%
select(location, drill, bottom_of_layer, top_of_layer, thickness, soiltype, order)
tib1
Я хочу нарисовать поперечный разрез почвы. Я пытаюсь сделать это с помощью geom_bar
или geom_col
из ggplot2
. В данных примера дан порядок (1: 3). Я хочу, чтобы столбики располагались в порядке, указанном в столбце порядка. Таким образом, это будет означать, что полоса, в которой:
- location == loc2 и Drill == 4 должны быть раскрашены в следующем порядке (сверху вниз):
оранжевый (суглинок) - желтый (песок) - серый (гравий) - морской зеленый (глина)
А ТАКЖЕ
- location == loc1 и Drill == 1 должны быть раскрашены в следующем порядке (сверху вниз):
серый (гравий) - желтый (песок) - морской зеленый (глина)
В то время как остальные столбцы в стопке остаются в том же порядке и цвете.
Другими словами: мне нужно, чтобы цвета на полосе с накоплением менялись в соответствии с последовательностью, указанной в порядке столбцов.
colpalette = c("darkseagreen3", "darkgrey", "#FF9966", "palegoldenrod")
ggplot(tib1,
aes(x = drill))+
geom_bar(aes(fill = soiltype, y = -thickness),
stat = "identity")+
scale_fill_manual(values = colpalette)+
facet_wrap(vars(location), scale = "free_x")+
xlab("drill")+
ylab("depth (cm)")+
ggtitle("how to plot the bars in the 'preferred order'? ",
subtitle = "the order of loc2 and drill == 4 should be: loam-sand-gravel-clay")+
theme_minimal()
Сравнимые, но немного разные проблемы:
Порядок уложенных стержней ggplot2 - профиль почвы и Изменить порядок столбчатой диаграммы с накоплением в ggplot2
Интересно, возможно ли вообще то, о чем я прошу, в ggplot как:
Гистограммы автоматически складываются, когда несколько столбцов помещаются в одно и то же место. Порядок заливки соответствует легенде.
Так что мне, возможно, придется искать альтернативный вариант ... если у кого-то нет взлома? Любая помощь, ответы, альтернативные варианты построения, ссылки приветствуются :) Я предпочитаю ggplot2, если это возможно.