Распаковка и группировка гистограммы с помощью ggplot2

Я новичок в R, и я пытаюсь разложить сложенный график, который я создал. Я пробовал использовать функцию "position =" dodge ", но она, похоже, не сработала.

Кто-нибудь знает, как это решить?

df <- structure(list(Type = c("a", "b", "c", "d", "e", "f", "g", "h","i"), 
Repeat_1 = c(10, 39, 1, 8, 2, 25, 11, 14, 4), Repeat_2 = c(11,24, 15, 1, 2, 
3, 2, 3, 5), Repeat_3 = c(4, 1, 2, 1, 1, 2, 10,5, 4)), row.names = c(NA, -9L), 
class = c("tbl_df", "tbl", "data.frame")) 

необработанные данные:

Type  Repeat_1 Repeat_2 Repeat_3
1 a           10       11        4
2 b           39       24        1
3 c            1       15        2
4 d            8        1        1
5 e            2        2        1
6 f           25        3        2
7 g           11        2       10
8 h           14        3        5
9 i            4        5        4

И вот что я использую, чтобы визуализировать это:

p<-ggplot(data=df, aes(x=Type, y=Conc.)) +
    geom_bar(aes(y=Repeat_1),stat="identity",position ="dodge",alpha=.5,fill='blue',color='blue') +
    geom_bar(aes(y=Repeat_2),stat="identity",position ="dodge",alpha=.8,fill='pink',color='red4') +
    geom_bar(aes(y=Repeat_3),stat="identity",position ="dodge",alpha=.8,fill='lightgreen',color='green4')

Что дает: 1: https://i.stack.imgur.com/j5t33.png

enter image description here

Как видите, я использовал уклонение, но это, похоже, не сработало, я хотел бы разделить стек, чтобы все повторы были сгруппированы вместе для каждого типа.

Большое спасибо!

Проблема в формате ваших данных. Проверьте stackoverflow.com/questions/5963269/…, отредактируйте свой пост, чтобы я мог воссоздать ваши данные, и я смогу вам помочь.

Ben G 10.08.2018 15:43

@BenG Это помогает?

Connor Scott 10.08.2018 15:54

Да, я дал ответ ниже. Хорошая работа.

Ben G 10.08.2018 16:48
1
3
399
1

Ответы 1

# at first it is preferable for ggplot if your data is in long format
library(tidyr)
df_long <- df %>% gather(key = repeat_group, value = val, -1)

# now you can plot the bars next to each other with just one geom_bar
ggplot(data = df_long, aes(x = Type, y = val)) + 
       geom_bar(aes(fill = repeat_group), stat = "identity",position = "dodge")

Другие вопросы по теме