Writing a Plot Function
Set-up Work
We’ll use the following packages:
Here is our data:
Make Factors:
Dataset$Participant <- factor(Dataset$Participant)
Dataset$Colleges <- factor(Dataset$Colleges)
Dataset$Department <- factor(Dataset$Department)
Dataset$Class <- factor(Dataset$Class)
Dataset$Major <- factor(Dataset$Major)
Dataset$Number <- factor(Dataset$Number)
Dataset$Level <- factor(Dataset$Level)
Dataset$Textbook <- factor(Dataset$Textbook)
Dataset$BookChapter <- factor(Dataset$BookChapter)
Dataset$JournalArticle <- factor(Dataset$JournalArticle)
Dataset$Condition <- factor(Dataset$Condition)
Dataset$Question <- factor(Dataset$Question)
Dataset$Reading <- factor(Dataset$Reading)
Dataset$ReadingTypes <- factor(Dataset$ReadingTypes)
Dataset$Behavior <- factor(Dataset$Behavior)Dataset$Question <- relevel(Dataset$Question, "Useful")
Dataset$Reading <- relevel(Dataset$Reading, "Applying")
Dataset$Reading <- relevel(Dataset$Reading, "Synthesizing")
Dataset$Reading <- relevel(Dataset$Reading, "Elaborating")
Dataset$Reading <- relevel(Dataset$Reading, "Summarizing")
Dataset$Reading <- relevel(Dataset$Reading, "Reviewing")
Dataset$Reading <- relevel(Dataset$Reading, "Previewing")
Dataset$ReadingTypes <- relevel(Dataset$ReadingTypes, "SynthesizingApplying")
Dataset$ReadingTypes <- relevel(Dataset$ReadingTypes, "SummarizingElaborating")
Dataset$ReadingTypes <- relevel(Dataset$ReadingTypes, "PreviewingReviewing")Dataset$College <- factor(Dataset$College)
Dataset$College <- relevel(Dataset$College, "JusticeSafety")
Dataset$College <- relevel(Dataset$College, "Education")
Dataset$College <- relevel(Dataset$College, "CLASS")
Dataset$College <- relevel(Dataset$College, "HealthSciences")
Dataset$College <- relevel(Dataset$College, "Science")
Dataset$College <- relevel(Dataset$College, "BusinessTechnology")HSW: Here’s an easier way to re-order the levels of a factor:
A Bar Plot
Code for the bar plot:
level <- 0.95
summaryData <-
Useful %>%
group_by(Reading, College) %>%
summarize(
meanRating = mean(Rating),
lower = mean(Rating) - qnorm(1 - level / 2) * sd(Rating),
upper = mean(Rating) + qnorm(1 - level / 2) * sd(Rating)
)
summaryData %>%
ggplot(aes(x = Reading, y = meanRating, fill = Reading)) +
geom_bar(stat = "identity") +
geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.5) +
labs(y = "Rating", x = "") +
facet_wrap(vars(College), nrow =3) +
theme(axis.text.x=element_blank())A Bar Plot Function
The following is based on a tutorial:
(It’s also available as a Vignette in the dplyr package.)
makePlot <- function(data, grouper, response, facetter, level = 0.95) {
grouper <- enquo(grouper)
response <- enquo(response)
facetter <- enquo(facetter)
response_name <- quo_name(response)
level <- 0.95
summaryData <-
data %>%
group_by(!! grouper, !! facetter) %>%
summarize(
meanResponse = mean(!! response),
lower = mean(!! response) - qnorm(1 - level / 2) * sd(!! response),
upper = mean(!! response) + qnorm(1 - level / 2) * sd(!! response)
)
summaryData %>%
ggplot(aes(x = !! grouper, y = meanResponse, fill = !! grouper)) +
geom_bar(stat = "identity") +
geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.5) +
labs(y = response_name, x = "") +
facet_wrap(vars(!! facetter), nrow = 3) +
theme(axis.text.x=element_blank())
}Let’s try it: