Visualizations I created to examine how students from University of Oregon graduate programs perceived their departments/programs/advisors.
ggplot2
Shiny
Education
Published
June 19, 2021
This post was originally designed because I was interested in working on student experience exit survey data from my department to see if there was a change from 2012 to 2015. These questions are given to every student that graduates from a graduate program at the University of Oregon (UO). This includes responses for terminal masters degrees, students that get masters degrees and move on to a doctoral degree, and the same potential students that respond again when they get their doctorate. This data is open to any UO student, staff, or faculty member that has login information for this data.
This data ended up becoming a time commitment as there was no efficient way to collect data from the pdf files for each college at the UO. An example can be seen here. One great resource for collecting data from pdfs was to use the pdftools package, but if you look at the example link provided above, the UO Graduate School decided to color code cells in the table, which threw off any function to extract all the values in an efficient manner. Anyway…
The data and other existing data files can be found here. When I have some more free time, I may decide to join the other datasets to the student experience data to examine some more interesting questions regarding this data. But for now, lets look at the student experience data.
These exit surveys have several questions that are broken down into percentages about how many of the students agreed or disagreed with the statement. For instance, from the pdf, the first statement is Quality of the faculty in a student’s department. So we can look at that with this first plot. At the same time, we can also look at the difference between the two years of data. In order to look at all the variables at the same time that have the starting string of fac_qual, I’ll use pivot_longer to collect any variable that has that variable string about faculty quality. Since the first and second table on the pdf refer to excellent or good or excellent levels of student satisfaction about faculty quality, I decided to filter out the excellent student satisfaction and move on with only student satisfaction that is either good or excellent.
So the first shot at making a visual for the two years looks a little cluttered because of using geom_col(). My first decision was to remove the columns and change those to points to make it a little less cluttered and clearer. I already enjoyed the way this looked better. I also decided to clean some things up by changing the names of the variables to better describe what the variables were assessing. I also decided to go back and change the programs to be title case and with spaces rather than underscores.
Just in case anyone else is interested in this data, I also created a quick function to see how this visual looked like for other variables in the dataset. For instance, I’ll look at a couple of different variables.
Lastly, I decided to look into the difference between the variables I’m most interested in. First, I wanted to look at how graduate students perceive inclusiveness of students of color within their departments. Another variable I was interested in was inclusiveness of first-generation graduate students. Thanks to the plotly package I was able to include some interactive components to the visuals. Specifically zooming in to specific departments give a better idea of the difference between agreeing and disagreeing on these topics. With plotly, you can also click on an option in the legend to only see those values. I also removed the strongly agree option since the agree applied to students that strongly agreed or agreed with the statement.
Code
library(plotly)stu_color <- exit |>pivot_longer(matches("^inclu_stu_color" ),names_to ="stu_color",values_to ="stu_color_values" ) |>filter(stu_color !="inclu_stu_color_strong") |>mutate(stu_color =recode(stu_color, "inclu_stu_color_agree"="Agree with Inclusive Environment for Students of Color","inclu_stu_color_disagree"="Disagree with Inclusive Environment for Students of Color")) |>ggplot(aes(fct_reorder(program, stu_color_values), stu_color_values)) +geom_point(aes(color =as.factor(year), shape =as.factor(stu_color)), size =2) +labs(title ="Faculty Quality by Academic Program",x ="",y ="Faculty Quality",caption ="Data from University of Oregon's (UO)\nstudent satisfaction surveys after graduation") +coord_flip() +scale_color_manual(values =c("#d74122","#669b3e"))stu_plot <-ggplotly(stu_color)# layout(legend = list(orientation = "h",# xanchor = "center",# x = 0,# y = -60)) stu_plot
Code
firstgen <- exit |>pivot_longer(matches("^inclu_first_gen" ),names_to ="first_gen",values_to ="first_gen_values" ) |>filter(first_gen !="inclu_first_gen_strong") |>mutate(first_gen =recode(first_gen, "inclu_first_gen_agree"="Agree with Inclusive Environment for First Gen","inclu_first_gen_disagree"="Disagree with Inclusive Environment for First Gen")) |>ggplot(aes(fct_reorder(program, first_gen_values), first_gen_values)) +geom_point(aes(color =as.factor(year), shape =as.factor(first_gen)), size =2) +labs(title ="Faculty Quality by Academic Program",x ="",y ="Faculty Quality",caption ="Data from University of Oregon's (UO)\nstudent satisfaction surveys after graduation") +coord_flip() +scale_color_manual(values =c("#d74122","#669b3e"))first_plot <-ggplotly(firstgen) # layout(legend = list(orientation = "h",# xanchor = "center",# x = 0,# y = -60)) first_plot