У меня есть кадр данных в R с ~ 7000 строк. Показаны 10 строк моего фрейма данных:
TypeA TypeB Ct_for_typeA Ct_for_typeB
code3 code2 m n
code4 code1 m p
code3 code7 p n
code8 code6 n n
code1 code3 m p
code5 code8 n o
code2 code1 o p
code5 code5 p m
code7 code4 o m
code6 code1 m o
Столбец 1 (тип A) и столбец 2 (тип B) имеют 8 различных кодов от code1 до code8. Колонка 3 и колонка 4 имеют 4 разные категории, то есть m, n, o и p. Я хочу построить гистограмму с кодом от 1 до кода 8 по оси x и «в процентах» по оси y. Это означает, что ось x будет иметь 8 пар столбцов, а ось y будет показывать процент кодов, и далее я хочу разделить каждый столбец с разными цветовыми стеками в соответствии с столбцом 3 (для столбца 1) и столбцом 4 (для столбца 2) . Пример:
Учитывая только 1-ю пару кода по оси x, т.е. code1. Из приведенных выше 10 строк мы видим, что code1 в «TypeA» составляет 10%, а в «TypeB» — 30%. Итак, первая пара имеет первый бар до 10%, а второй бар до 30%. Теперь первый столбец первой пары будет разделен (цвета сложены) в соответствии с 3-м столбцом. Как мы видим, есть только "m" с кодом 1, цвет будет "m" (целые 10%), но для кода 1 в "TypeB", т.е. второй бар первой пары будет разделен на 20% с цветом "p" и 10% с цветом "о".
Я попытался сложить цвета с помощью «beside = F», и это работает. Это означает, что если у меня есть только 1-й и 3-й столбцы, я могу сделать это легко. Но включение второй полосы для 2-й и 4-й колонок меня смущает. Надеюсь, мое объяснение не сбивает с толку. Заранее спасибо.
РЕДАКТИРОВАТЬ: после комментария Томаса.
Если «my_frame» — это кадр данных с более чем 10 строками. Для одной переменной со сложенными цветами я использовал:
px=ggplot(my_frame,aes(x=TypeA,fill=Ct_for_typeA))+geom_bar()
print(px)
Итак, во-первых, здесь я не получаю процент по оси Y, а во-вторых, как я могу поместить «рядом» полосу, которая находится во 2-м столбце, а сложенные цвета находятся в 4-м столбце.