Сложенный и соседний барплот в ggplot () - PullRequest
0 голосов
/ 24 октября 2019

У меня есть фрейм данных, который имеет три столбца фактора. Один столбец - это столбец «SurveyDate», а остальные - атрибуты участников опроса;скажем, один из них «Пол», а другой - «HighSchoolGraduate»

Я хочу создать график, который имеет дату в качестве оси X и использует соседние столбчатые графики для числа респондентов мужского и женского пола,и в каждом из этих двух столбцов составьте таблицу «Выпускник средней школы против выпускника средней школы».

testDates <- sample(seq(as.Date('2019/1/1'), as.Date('2019/2/1'), by="day"), 100, replace = TRUE)
gender <- sample(c("F", "M"), 100, replace = TRUE)
graduate <- sample(c("Y", "N"), 100, replace = TRUE)
testdf <- data.frame(testDates, gender, graduate)

Я могу создать таблицу частот дат и пола и использовать ее для создания стороны. по стороннему графику:

tbl <- with(testdf, table(testDates, gender))
ggplot(as.data.frame(tbl), aes(x=testDates, y=Freq, fill=gender)) +
+ geom_col(position='dodge

Это дает: Plot of dates vs. count of gender

Так что теперь ... как мне разделить каждый из этих столбцов по выпускнику? (И да, я должен был создать больше образцов для этой демонстрации, но идея все еще работает.)

1 Ответ

1 голос
/ 24 октября 2019

Используя group и fill, вы можете получить результат, который вы описываете. Тем не менее, я надеюсь, что из приведенного ниже вывода ясно, что это может быть не лучшим способом визуализации данных:

library(ggplot2)
testDates <- sample(seq(as.Date('2019/1/1'), as.Date('2019/2/1'), by="day"), 100, replace = TRUE)
gender <- sample(c("F", "M"), 100, replace = TRUE)
graduate <- sample(c("Y", "N"), 100, replace = TRUE)
 testdf <- data.frame(testDates, gender, graduate)

 tbl <- with(testdf, table(testDates, gender, graduate))
ggplot(as.data.frame(tbl), aes(x=testDates, y=Freq, group=gender, fill = graduate)) +
   geom_col(position='dodge' )

Создано в 2019-10-24 с помощью пакета представьте (v0.3.0)

Обновление

С помощью interaction вы сможете кодировать 2 фактора на шкале заполнения

ggplot (as.data.frame (tbl), aes (x = testDates, y = Freq, группа = пол, заполнить = взаимодействие (пол, выпускник))) + geom_col (position = 'dodge')

...