All of these graphs were produced using the data collected at 09:30, 13:00 and 17:00 on the 1st, 2nd and 4th of April 2025. 18 different locations were visited, which could be split into 5 different categories depending on their building material and if they were in a green space.

Category Location description
Accrington brick, Darley dale stone Downstairs uncovered Bramwell music
Accrington brick, Darley dale stone Downstairs sheltered Bramwell Music
Accrington brick, Darley dale stone Outside Bramwell Music entrance
Concrete Next to Physics East
Concrete Next to Barber Institute
Concrete Next to Ashly Buuilding
Sandstone and bronze anodised aluminium cladding Teaching and Learning - North entrance
Sandstone and bronze anodised aluminium cladding Teaching and Learning - Around the back
Sandstone and bronze anodised aluminium cladding Teaching and Learning - South entrance
Aluminium and zinc cladding Library - Around the back
Aluminium and zinc cladding Library - North side
Aluminium and zinc cladding Library - Main entrance
Green space Old Joe - Shaded
Green space Old Joe - Non-shaded
Green space North Gate - Shaded
Green space North Gate - Non-shaded
Green space Grass outside library - Shaded
Green space Grass outside library - Non-shaded

Some of the graphs below are interactive, so you are able to:

This allows you to read and understand the data much easier, especially on the more crowded graphs.

Temperature

These graphs show some of the data from the temperature measurements taken, and are all interactive.

Line graph showing average temperature over time - all locations

data <- read.csv("C:/Users/lizzy/OneDrive/Documents/uni/Year 2/Digital data capture and analysis/Assessment/temperature_cleaned.csv")

p <- ggplot(data, aes(x = date, y = temperature, colour = location, group = location)) +
  geom_line(position = position_dodge(width = 0.5)) +
  scale_y_continuous(breaks = seq(10, 30, by = 2)) +
  theme_minimal() +
  labs(title = "Average Temperature Over Time", x = "Time", y = "Temperature (°C)") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

interactive_plot <- ggplotly(p)
interactive_plot

This graph shows us the overall impression of the temperature data collected, for example the locations near the Bramwell music building are much more steady when it comes to temperature, whereas the locations near the library are much more erratic over the course of the three days.

Line graph showing average temperature in green spaces: Shade vs Non-shade

data <- read.csv("C:/Users/lizzy/OneDrive/Documents/uni/Year 2/Digital data capture and analysis/Assessment/temperature_cleaned.csv")

data <- data %>%
  mutate(
    shade = case_when(
      grepl("- Shaded", location, ignore.case = TRUE) ~ "Shaded",
      grepl("- Non-shaded", location, ignore.case = TRUE) ~ "Non-shaded",
      TRUE ~ NA_character_
    )
  )

filtered_data <- data %>%
  filter(location %in% c(
    "Grass outside library - Non-shaded",
    "Grass outside library - Shaded",
    "Old Joe - Non-shaded",
    "Old Joe - Shaded",
    "North Gate - Shaded",
    "North Gate - Non-shaded"
  ))


avg_data <- filtered_data %>%
  group_by(date, shade) %>%
  summarise(avg_temperature = mean(temperature), .groups = "drop")

p <- ggplot(avg_data, aes(x = date, y = avg_temperature, colour = shade, group = shade)) +
  geom_line(linewidth = 1) +
  theme_minimal() +
  labs(title = "Average temperature in green spaces: Shaded vs Non-shaded",
       x = "Date",
       y = "Average Temperature (°C)",
       colour = "Shade Status") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

interactive_plot <- ggplotly(p)
interactive_plot

This line graph clearly shows that there isn’t much of an impact made by whether green spaces are in the shade or not, when it comes to temperature. This means that the benefits that come from having more green space on the University of Birmingham campus (e.g. aesthetics, wildlife, air quality) are enough to build more green spaces even if they may be in the shade, as temperature variation doesn’t impact on these spaces very much.

Line graph showing average temperature variation due to difference in building materials

data <- read.csv("C:/Users/lizzy/OneDrive/Documents/uni/Year 2/Digital data capture and analysis/Assessment/temperature_cleaned.csv")

data <- data %>%
  mutate(
    material = case_when(
      grepl("Bramwell music", location, ignore.case = TRUE) ~ "Accrington brick, Darley dale stone",
      grepl("Next to", location, ignore.case = TRUE) ~ "Concrete",
      grepl("T&L -", location, ignore.case = TRUE) ~ "Sandstone and bronze anodised aluminium cladding",
      grepl("Library - ", location, ignore.case = TRUE) ~ "Aluminium and zinc cladding",
      TRUE ~ NA_character_
    )
  )

filtered_data <- data %>%
  filter(location %in% c(
    "Downstairs uncovered Bramwell Music",
    "Downstairs sheltered Bramwell Music",
    "Outside Bramwell Music entrance",
    "Next to Physics East",
    "Next to Barber Institute",
    "Next to Ashly Building",
    "T&L - South Entrance",
    "T&L - North entrance",
    "T&L - Around the back",
    "Library - North Side",
    "Library - Main Entrance",
    "Library - Around the back"
  ))

avg_data <- filtered_data %>%
  group_by(date, material) %>%
  summarise(avg_temperature = mean(temperature), .groups = "drop")

p <- ggplot(avg_data, aes(x = date, y = avg_temperature, colour = material, group = material)) +
  geom_line(linewidth = 0.5) +
  scale_y_continuous(breaks = seq(10, 30, by = 2)) +
  theme_minimal() +
  labs(
    title = "Average temperature surrounding different building materials",
    x = "Date",
    y = "Average Temperature (°C)",
    colour = "Building material"
  ) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

interactive_plot <- ggplotly(p)
interactive_plot

This line graph shows that there isn’t a huge amount of correlation between temperature and building material. However, there is evidence to argue that concrete may be the most erratic, as it varies the most throughout the day, therefore actions may need to be taken in order to counteract this and result in more economical use of heating facilities within these buildings.

Humidity

These graphs were made using all of the humidity data collected across every time and location, with the line graph being interactive.

Heatmap showing variation in humidity due to time and location

humidity_data <- read.csv("C:/Users/lizzy/OneDrive/Documents/uni/Year 2/Digital data capture and analysis/Assessment/humidity_cleaned.csv")

humidity_data$Label <- round(humidity_data$humidity, 1)

ggplot(humidity_data, aes(x = date, y = location, fill = humidity)) +
  geom_tile(colour = "white") +
  geom_text(aes(label = Label), size = 3, colour = "white") +
  scale_fill_viridis_c(option = "C") +
  labs(title = "Heatmap showing variation in humidity by time and location",
       x = "Time",
       y = "Location",
       fill = "Humidity (%)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1),
        panel.grid = element_blank())

This heat map clearly allows us to spot a pattern in the data when it comes to variation in humidity day to day, as each day starts off more humid and it then falls as the day goes on. This is significant when it comes to trying to come up with strategies to counteract the unwanted levels of humidity, as they could be time specific in order to be the most economical, and only use them during the worst times of the day.

Line graph showing variation in humidity due to different building materials

data <- read.csv("C:/Users/lizzy/OneDrive/Documents/uni/Year 2/Digital data capture and analysis/Assessment/humidity_cleaned.csv")

data <- data %>%
  mutate(
    material = case_when(
      grepl("Bramwell music", location, ignore.case = TRUE) ~ "Accrington brick, Darley dale stone",
      grepl("Next to", location, ignore.case = TRUE) ~ "Concrete",
      grepl("T&L -", location, ignore.case = TRUE) ~ "Sandstone and bronze anodised aluminium cladding",
      grepl("Library - ", location, ignore.case = TRUE) ~ "Aluminium and zinc cladding",
      TRUE ~ NA_character_
    )
  )

filtered_data <- data %>%
  filter(location %in% c(
    "Downstairs uncovered Bramwell Music",
    "Downstairs sheltered Bramwell Music",
    "Outside Bramwell Music entrance",
    "Next to Physics East",
    "Next to Barber Institute",
    "Next to Ashly Building",
    "T&L - South Entrance",
    "T&L - North entrance",
    "T&L - Around the back",
    "Library - North Side",
    "Library - Main Entrance",
    "Library - Around the back"
  ))


avg_data <- filtered_data %>%
  group_by(date, material) %>%
  summarise(avg_humidity = mean(humidity), .groups = "drop")

p <- ggplot(avg_data, aes(x = date, y = avg_humidity, colour = material, group = material)) +
  geom_line(linewidth = 0.5) +
  scale_y_continuous(breaks = seq(30, 80, by = 5)) +
  theme_minimal() +
  labs(title = "Average Humidity surrounding different building materials",
       x = "Date",
       y = "Average Humidity (°C)",
       color = "Building material") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

interactive_plot <- ggplotly(p)
interactive_plot

This graph shows that there isn’t a large amount of variation when it comes to humidity due to the different building materials, however,it can be seen that concrete tends to be the lowest overall. This may suggest that if you want the micro-climate surrounding any future buildings to be less humid, then building it out of concrete would be your best option.

Wind speed

This graph uses all of the wind speed data collected across every location and time.

Box plot showing variation in wind speed across locations

wind_data <- read_csv("C:/Users/lizzy/OneDrive/Documents/uni/Year 2/Digital data capture and analysis/Assessment/windspeed_cleaned.csv",show_col_types = FALSE)

p <- ggplot(wind_data, aes(x = Location, y = Windspeed, fill = Location)) +
  geom_boxplot() +
  labs(title = "Wind Speed Variation Across Locations",
       x = "Location",
       y = "Wind Speed (m/s)") +
  theme_minimal() +
  scale_y_continuous(breaks = seq(0, 6.5, by = 1)) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1),
        legend.position = "none")
interactive_plot <- ggplotly(p)
interactive_plot

This box plot accounts for the large amounts of wind speed recordings that were 0m/s, therefore the lower down the main box of each location is, the less windy overall. However, this also accounts for any anomalies in certain locations, such as the 6.3m/s average time recorded next to physics east. Therefore, this graph allows for a clear view into which locations are prone to the highest/lowest wind speeds, for example the locations near Bramwell music tend to have much lower wind speeds.