Welcome | Data | Analyses | Discussion | Maps |
Analyses | ||||||
---|---|---|---|---|---|---|
Urban Heat | All Areas | Portland | Tacoma | King County | iNaturalist | City Inventories |
library(tidyverse)
library(knitr)
library(kableExtra)
library(gghalves)
library(patchwork)
library(scales)
The purpose of this page is to provide summaries of the data from the WRDM observations included in these analyses.
iNaturalist data were downloaded from the Western Redcedar Dieback Map on 1.13.24.
data <- read.csv('https://raw.githubusercontent.com/jmhulbert/redhot/main/data/urban-data-modified.csv')
1258 trees were shared by community scientists in the WRDM project in areas with UHI data between 2020-2023.
48 dead trees were included.
data.w.dead <- data
data <- data %>% filter(field.tree.canopy.symptoms!="Tree is dead") %>% filter(field.dieback.percent<100) %>% droplevels()
data$field.other.factors...are.there.signs.or.symptoms.of.insect..diseases..or.other.damage.[data$field.other.factors...are.there.signs.or.symptoms.of.insect..diseases..or.other.damage.==""] <- "Not sure"
data$field.other.factors...are.there.signs.or.symptoms.of.insect..diseases..or.other.damage.[data$field.other.factors...are.there.signs.or.symptoms.of.insect..diseases..or.other.damage.=="Unsure"] <- "Not sure"
hoyt.data <- data.w.dead %>% filter(str_detect(place_guess, "Hoyt") |str_detect(place_guess, "hoyt"))
101 trees were added from Hoyt Arboretum.
data <- data %>% filter(!str_detect(place_guess, "Hoyt") & !str_detect(place_guess, "hoyt"))
1104 observations were included in analyses after removing dead trees and trees from hoyt.
data %>% group_by(Area) %>% summarize(n.obs=n())
## # A tibble: 3 × 2
## Area n.obs
## <chr> <int>
## 1 King County 420
## 2 Portland 341
## 3 Tacoma 343
users <- data %>% group_by(user_login) %>% summarize(n=n()) %>% arrange(desc(n))
users
## # A tibble: 130 × 2
## user_login n
## <chr> <int>
## 1 jim1083 233
## 2 michael_james_burkhow 62
## 3 alexis_mushroom 57
## 4 lyndsayf 57
## 5 jmhulbert 46
## 6 angela_mabel 45
## 7 pdxmat 36
## 8 dayhiker 33
## 9 margmacd 27
## 10 d_farmer 25
## # ℹ 120 more rows
47 users only added one observation, but 83 users added at least two observations, including 19 who added more than 10, with one person adding as many as 233.
data %>% group_by(Area) %>% summarize(n.participants=n_distinct(user_id),n.obs=n())
## # A tibble: 3 × 3
## Area n.participants n.obs
## <chr> <int> <int>
## 1 King County 66 420
## 2 Portland 45 341
## 3 Tacoma 24 343
data %>% group_by(reclassified.tree.canopy.symptoms) %>% summarize(n.obs=n())
## # A tibble: 4 × 2
## reclassified.tree.canopy.symptoms n.obs
## <chr> <int>
## 1 Dead Top 107
## 2 Healthy 708
## 3 Other 139
## 4 Thinning Canopy 150
area.obs.health <- data %>% group_by(Area,reclassified.tree.canopy.symptoms) %>% summarize(n.obs=n())
## `summarise()` has grouped output by 'Area'. You can override using the
## `.groups` argument.
area.obs.health
## # A tibble: 12 × 3
## # Groups: Area [3]
## Area reclassified.tree.canopy.symptoms n.obs
## <chr> <chr> <int>
## 1 King County Dead Top 63
## 2 King County Healthy 236
## 3 King County Other 58
## 4 King County Thinning Canopy 63
## 5 Portland Dead Top 15
## 6 Portland Healthy 260
## 7 Portland Other 35
## 8 Portland Thinning Canopy 31
## 9 Tacoma Dead Top 29
## 10 Tacoma Healthy 212
## 11 Tacoma Other 46
## 12 Tacoma Thinning Canopy 56
ggplot(area.obs.health,aes(reclassified.tree.canopy.symptoms,n.obs,fill=reclassified.tree.canopy.symptoms))+facet_wrap(~Area)+geom_col()+coord_flip()+guides(fill="none")+theme_bw()+labs(x="Tree Canopy Symptoms",y="Number of Observations")+geom_text(aes(label=n.obs),nudge_y=20)
data %>% group_by(field.other.factors...are.there.signs.or.symptoms.of.insect..diseases..or.other.damage.) %>% summarize(n.obs=n())
## # A tibble: 3 × 2
## field.other.factors...are.there.signs.or.symptoms.of.insect..diseases.…¹ n.obs
## <chr> <int>
## 1 No 503
## 2 Not sure 481
## 3 Yes (please elaborate in Notes, add Picture if possible) 120
## # ℹ abbreviated name:
## # ¹​field.other.factors...are.there.signs.or.symptoms.of.insect..diseases..or.other.damage.
obs.signs <- data %>% group_by(field.other.factors...are.there.signs.or.symptoms.of.insect..diseases..or.other.damage.) %>% summarize(n.obs=n())
obs.signs
## # A tibble: 3 × 2
## field.other.factors...are.there.signs.or.symptoms.of.insect..diseases.…¹ n.obs
## <chr> <int>
## 1 No 503
## 2 Not sure 481
## 3 Yes (please elaborate in Notes, add Picture if possible) 120
## # ℹ abbreviated name:
## # ¹​field.other.factors...are.there.signs.or.symptoms.of.insect..diseases..or.other.damage.
ggplot(obs.signs,aes(field.other.factors...are.there.signs.or.symptoms.of.insect..diseases..or.other.damage.,n.obs,fill=field.other.factors...are.there.signs.or.symptoms.of.insect..diseases..or.other.damage.))+geom_col()+coord_flip()+guides(fill="none")+theme_bw()+labs(x="Signs or Symptoms Observed",y="Number of Observations")+geom_text(aes(label=n.obs),nudge_y=15)
obs.factors <- data %>% filter(field.other.factors...are.there.signs.or.symptoms.of.insect..diseases..or.other.damage.!="No") %>% group_by(field.optional...what..other.factors..were.observed.) %>% summarize(n.obs=n())
obs.factors
## # A tibble: 14 × 2
## field.optional...what..other.factors..were.observed. n.obs
## <chr> <int>
## 1 "" 71
## 2 "Animal damage (woodpecker/sapsucker holes, bark peeling)" 7
## 3 "Evidence of soil compaction" 5
## 4 "Fungal Activitiy (mycelial fans, bleeding cankers, mushrooms at base,… 13
## 5 "Inner stem decay (rot, hollow center, etc.)" 2
## 6 "Insect damage on trunk (holes, frass, galleries, etc.)" 21
## 7 "Invasive plants present or growing on tree" 24
## 8 "Mechanical damage or fire scars" 30
## 9 "Multiple factors (please describe in Notes)" 8
## 10 "Needle or leaf disease (dieback, checking, blight, etc.)" 14
## 11 "Needle or leaf disease (dieback, checking, blight, powdery mildew etc… 3
## 12 "No selection" 360
## 13 "Other (please describe in Notes)" 33
## 14 "Top Cutting or Intensive Pruning" 10
ggplot(obs.factors,aes(field.optional...what..other.factors..were.observed.,n.obs,fill=field.optional...what..other.factors..were.observed.))+geom_col()+coord_flip()+guides(fill="none")+theme_bw()+labs(x="Other Factor",y="Number of Observations")+geom_text(aes(label=n.obs),nudge_y=15)