I have grouped my data as desired and added up the quantities correctly.
Now I want to create a stacked bar plot in in which I would like to display the labels per Unit.
The summarized data looks like this:
To read it in R:
df <- structure(list(date = structure(c(17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785), class = "Date"), hour = structure(c(5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L,
12L, 12L, 12L, 12L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L,
13L, 13L, 13L, 13L, 13L, 13L, 13L, 14L, 14L, 14L, 14L, 14L, 14L,
14L, 14L, 14L, 14L, 14L, 14L, 14L, 14L, 15L, 15L, 15L, 15L, 15L,
15L, 15L, 15L, 15L, 15L, 15L, 15L, 16L, 16L, 16L, 16L), .Label = c("00",
"02", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16",
"17", "18", "19", "20", "21", "22"), class = "factor"), lGroup = structure(c(3L,
3L, 3L, 3L, 4L, 5L, 6L, 6L, 3L, 3L, 3L, 3L, 5L, 6L, 6L, 9L, 9L,
3L, 3L, 3L, 6L, 6L, 6L, 9L, 9L, 9L, 9L, 3L, 3L, 3L, 6L, 9L, 9L,
9L, 9L, 9L, 3L, 3L, 3L, 3L, 3L, 5L, 6L, 6L, 6L, 9L, 9L, 9L, 9L,
5L, 6L, 6L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 5L, 6L, 9L, 9L, 9L, 3L,
3L, 3L, 3L, 4L, 5L, 6L, 6L, 6L, 8L, 8L, 9L, 9L, 9L, 9L, 2L, 3L,
3L, 3L, 3L, 3L, 4L, 4L, 5L, 6L, 8L, 9L, 9L, 9L, 9L, 9L, 3L, 3L,
3L, 3L, 3L, 4L, 4L, 5L, 6L, 6L, 6L, 6L, 9L, 9L, 3L, 3L, 3L, 3L,
3L, 3L, 6L, 6L, 9L, 9L, 9L, 9L, 3L, 3L, 3L, 3L), .Label = c("AHX",
"A1", "A3", "B1", "C1", "C3", "E1", "E3", "E5", "Andere"), class = "factor"),
unit = structure(c(2L, 3L, 5L, 6L, 3L, 3L, 3L, 5L, 3L, 5L,
6L, 8L, 3L, 3L, 7L, 2L, 6L, 2L, 3L, 6L, 3L, 5L, 7L, 3L, 4L,
5L, 6L, 3L, 5L, 6L, 3L, 2L, 3L, 4L, 5L, 6L, 3L, 5L, 6L, 8L,
9L, 3L, 2L, 3L, 5L, 2L, 5L, 6L, 9L, 3L, 3L, 5L, 2L, 3L, 5L,
6L, 8L, 9L, 3L, 3L, 3L, 2L, 4L, 6L, 2L, 3L, 5L, 6L, 3L, 3L,
3L, 5L, 7L, 3L, 9L, 3L, 4L, 5L, 6L, 5L, 2L, 3L, 5L, 6L, 8L,
3L, 4L, 3L, 3L, 3L, 2L, 3L, 4L, 6L, 9L, 3L, 5L, 6L, 7L, 8L,
3L, 4L, 3L, 2L, 3L, 5L, 7L, 2L, 6L, 2L, 3L, 5L, 6L, 8L, 9L,
3L, 7L, 2L, 4L, 5L, 6L, 3L, 5L, 6L, 9L), .Label = c("Andere",
"Einzelartikel", "Bund", "BundGroesser6m", "EuroPal", "Pack",
"Verschlag", "Rinnentransportkasten", "Sack"), class = "factor"),
values = c(1, 1, 1, 7, 1, 2, 1, 1, 6, 3, 15, 1, 3, 3, 1,
2, 2, 1, 9, 14, 3, 1, 1, 2, 1, 2, 1, 1, 2, 11, 1, 4, 1, 1,
1, 6, 5, 2, 16, 1, 3, 3, 2, 11, 3, 2, 2, 1, 1, 1, 1, 1, 1,
4, 2, 17, 1, 2, 2, 3, 7, 5, 2, 3, 1, 8, 1, 32, 4, 2, 1, 6,
2, 1, 1, 2, 1, 1, 1, 4, 1, 5, 10, 33, 1, 9, 2, 2, 7, 2, 6,
2, 3, 10, 2, 13, 8, 24, 1, 2, 5, 1, 7, 1, 13, 1, 1, 3, 4,
3, 11, 7, 11, 3, 2, 1, 4, 2, 1, 2, 1, 7, 1, 7, 3)), row.names = c(NA,
-125L), class = c("grouped_df", "tbl_df", "tbl", "data.frame"
), groups = structure(list(date = structure(c(17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785,
17785, 17785, 17785, 17785, 17785, 17785, 17785, 17785), class = "Date"),
hour = structure(c(5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 7L, 7L,
7L, 8L, 8L, 8L, 9L, 9L, 9L, 9L, 10L, 10L, 11L, 11L, 11L,
11L, 11L, 12L, 12L, 12L, 12L, 12L, 12L, 13L, 13L, 13L, 13L,
13L, 13L, 13L, 14L, 14L, 14L, 14L, 14L, 15L, 15L, 15L, 16L
), .Label = c("00", "02", "07", "08", "09", "10", "11", "12",
"13", "14", "15", "16", "17", "18", "19", "20", "21", "22"
), class = "factor"), lGroup = structure(c(3L, 4L, 5L, 6L,
3L, 5L, 6L, 9L, 3L, 6L, 9L, 3L, 6L, 9L, 3L, 5L, 6L, 9L, 5L,
6L, 3L, 4L, 5L, 6L, 9L, 3L, 4L, 5L, 6L, 8L, 9L, 2L, 3L, 4L,
5L, 6L, 8L, 9L, 3L, 4L, 5L, 6L, 9L, 3L, 6L, 9L, 3L), .Label = c("AHX",
"A1", "A3", "B1", "C1", "C3", "E1", "E3", "E5", "Andere"), class = "factor"),
.rows = list(1:4, 5L, 6L, 7:8, 9:12, 13L, 14:15, 16:17, 18:20,
21:23, 24:27, 28:30, 31L, 32:36, 37:41, 42L, 43:45, 46:49,
50L, 51:52, 53:58, 59L, 60L, 61L, 62:64, 65:68, 69L,
70L, 71:73, 74:75, 76:79, 80L, 81:85, 86:87, 88L, 89L,
90L, 91:95, 96:100, 101:102, 103L, 104:107, 108:109,
110:115, 116:117, 118:121, 122:125)), row.names = c(NA,
-47L), class = c("tbl_df", "tbl", "data.frame"), .drop = TRUE))
for my stacked barplot i use (among other things) this code:
ggplot(df, aes(x = hour, y = values, fill = unit, label = values)) +
geom_bar(stat = "identity") +
geom_text(stat = "identity", check_overlap = TRUE, hjust = -.2)
Which results in this:
Alternatively, I have already tried the following:
ggplot(df, aes(x = hour, y = values, fill = unit, label = values)) +
geom_col(aes(fill = unit)) +
geom_text(aes(label = values), position = position_stack(0.5))
which gives me an even worse result...
The result should look like this (here my polished plot manually filled with values for the larger units via powerpoint...)
Any suggestions on how I can fix this?