#r #ggplot2 #geom-bar
#r #ggplot2 #геометрическая линейка
Вопрос:
Я пытаюсь построить сгруппированный столбчатый график (x, y по другой переменной), но вместо количества я получаю график пропорций (0-1), при этом все столбцы равны 1. Я в замешательстве, потому что код кажется правильным (с использованием идентификатора статистики и уклонения от позиции)
Я пробовал разложить переменные на множители, не работает. Фрейм данных находится в длинной форме.
ggplot(supra.long, aes(condition, measurement, fill = MODE))
geom_bar(position = 'dodge', stat = "identity")
Получил тот же результат, когда я построил эту небольшую часть данных:
A tibble: 6 x 3
condition measurement MODE
<chr> <dbl> <chr>
INTACT 1 US
INTACT 0 US
INTACT 1 US
FT 0 MRI
FT 1 MRI
FT 0 MRI
Я ожидаю график подсчетов по оси y, но все столбцы равны 1 по шкале пропорций.
Комментарии:
1. Я хочу построить количество значений value = 1 для измерения. Я попытался преобразовать в chr, никаких изменений.
2. Я думаю, в этом и заключается проблема. Как он подсчитывает положительные (измерение = 1) значения? Или может быть. Как мне отобразить эти данные? Я полагаю, создайте отдельный набор данных только с положительными значениями.
Ответ №1:
Я бы, вероятно, либо суммировал данные перед их построением, либо использовал статистику «идентичности».
library(dplyr)
condition <- c("INTACT","INTACT","INTACT","FT","FT","FT")
measurement <- c(1,0,1,0,1,0)
MODE <- c("US","US","US","MRI","MRI","MRI")
supra.long <- data.frame(condition, measurement, MODE) %>%
group_by(condition, MODE) %>%
summarise(count = sum(measurement))
ggplot(supra.long)
geom_bar(aes(x=condition, y=count, fill = MODE), position = 'dodge', stat = "identity")
Или я бы отфильтровал нули и использовал статистику «count».
supra.long <- data.frame(condition, measurement, MODE) %>% filter(measurement > 0)
ggplot(supra.long)
geom_bar(aes(x=condition,fill = MODE), position = 'dodge', stat = "count")
Надеюсь, это поможет.
Комментарии:
1. Спасибо. Кажется, проще просто отфильтровать и получить набор данных с ответами «ДА», которые необходимо учитывать. Затем используйте stat = count