Наложение 2 барплотов с ggplot и 2 фильтра - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть фрейм данных, в котором есть данные, сгруппированные по сеансу и состоянию. Я хочу построить сеанс против #hits, раскрашенный по условию и отфильтрованный по полу.

Это пример моих данных:

library(tidyverse)

    df <- tribble(
        ~session, ~condition, ~sex, ~Obs_target_hits_mean 
        , 0          , 1       , "F"    , 3
        , 1          , 2       , "F"    , 3
        , 2          , 1       , "F"    , 1
        , 3          , 1       , "F"    , 2
        , 0          , 3       , "M"    , 4
        , 1          , 2       , "M"    , 1
        , 2          , 2       , "M"    , 1
        , 3          , 3       , "M"    , 1
        , 0          , 1       , "M"    , 2
        , 1          , 1       , "M"    , 3
    )

Это мой код, но рисунок выглядит странно. В идеале мне бы хотелось, чтобы графики были бы похожи на функцию удержания MATLAB

df1 <- df %>% filter(sex=="F")
df2 <- df %>% filter(sex=="M")
ggplot() + 
geom_bar(stat = "identity", data = df1, aes(x = df1$session, y = 
         df1$obs_target_hits_mean), fill = df1$condition) +
geom_bar(stat = "identity", data = df2, aes(x = df2$session, y = 
         df2$obs_target_hits_mean), color= df2$condition, alpha = 0.5)

Цифры для M и Female не выглядят четко. Что мне делать?

Спасибо, Тришна

1 Ответ

0 голосов
/ 13 февраля 2020

Я точно не знаю, каким должен быть ожидаемый результат, но помогает ли это?

library(tidyverse)

df <- tribble(
    ~session, ~condition, ~sex, ~hits
    , 0          , 1       , "F"    , 3
    , 1          , 2       , "F"    , 3
    , 2          , 1       , "F"    , 1
    , 3          , 1       , "F"    , 2
    , 0          , 3       , "M"    , 4
    , 1          , 2       , "M"    , 1
    , 2          , 2       , "M"    , 1
    , 3          , 3       , "M"    , 1
    , 0          , 1       , "M"    , 2
    , 1          , 1       , "M"    , 3
)

df %>%
    group_by(session, condition, sex) %>%
    summarise(obs_target_hits_mean = mean(hits)) %>%
    ggplot(aes(session, obs_target_hits_mean, fill = factor(condition))) +
    geom_bar(stat = "identity", position = "dodge") +
    facet_grid(. ~ sex)

enter image description here

...