All Shrubs Species
## Boxplot
csv.all.lc.li.df %>%
filter(pType == "willow") %>%
mutate(yr = as.character(yr)) %>%
filter(yr == 2008 | yr == 2013 | yr == 2018) %>%
ggplot(aes(timeClass, MAX_HEIGHT_CM)) +
geom_boxplot(aes(fill = FENCED), outlier.shape = NA) +
geom_hline(aes(yintercept = 110), color = "red", lty = "dashed", size = 1) +
ylim(0,300) +
labs(x="", y= "Height (cm)", title = "Maximum shrub height", caption = "WC, All shrub species line intercept plots") +
scale_fill_manual(values = c("grey90","grey50")) +
theme_minimal() +
# theme(axis.text.x=element_text(angle = 45, hjust = 1)) #+
facet_wrap(~SITE_TYPE)

# ggsave("./output/figures_exported/WCWNCWK_LI_shrubHt_boxplot.png", width = 6.5, height = 4.875)
#### Table of mean max height
csv.all.lc.li.df %>%
filter(timeClass == "BL" | timeClass == "2013" | timeClass == "2018") %>%
group_by(timeClass, SITE_TYPE) %>%
descr(MAX_HEIGHT_CM, stats = "common") %>%
summarytools::tb() %>%
mutate(across(c('mean','sd','pct.valid'), ~round(.,digits = 1))) %>%
gt() %>%
tab_header(title = "Max height", subtitle = "All shrub species combined, all site and mgt group types")
| timeClass |
SITE_TYPE |
variable |
mean |
sd |
min |
med |
max |
n.valid |
pct.valid |
| BL |
WC |
MAX_HEIGHT_CM |
83.5 |
81.3 |
3.0 |
60 |
535 |
154 |
92.8 |
| BL |
WNC |
MAX_HEIGHT_CM |
166.6 |
128.4 |
25.0 |
120 |
520 |
79 |
92.9 |
| 2013 |
WC |
MAX_HEIGHT_CM |
97.7 |
99.5 |
15.0 |
60 |
750 |
247 |
95.4 |
| 2013 |
WNC |
MAX_HEIGHT_CM |
222.2 |
138.8 |
15.0 |
210 |
500 |
95 |
96.0 |
| 2018 |
WC |
MAX_HEIGHT_CM |
113.4 |
92.9 |
0.7 |
80 |
810 |
409 |
96.2 |
| 2018 |
WNC |
MAX_HEIGHT_CM |
174.7 |
129.3 |
10.0 |
130 |
610 |
163 |
97.0 |
| 2018 |
WK |
MAX_HEIGHT_CM |
81.7 |
44.3 |
15.0 |
75 |
250 |
47 |
97.9 |
## all shrub species
csv.all.lc.li.df %>%
filter(pType == "willow") %>%
filter(yr == 2008 | yr == 2013 | yr == 2018) %>%
filter(!is.na(MAX_HEIGHT_CM)) %>%
filter(SITE_TYPE == "WC") %>%
ggplot(aes(timeClass, MAX_HEIGHT_CM)) +
geom_boxplot(aes(fill=FENCED), color = 'black', outlier.shape = NA) +
geom_hline(aes(yintercept = 110), color = "red", lty = "dashed", size = 1) +
scale_fill_viridis(discrete = TRUE) +
theme_minimal() +
ylim(0,320) +
scale_fill_manual(values = c("grey90","grey50")) +
labs(x = "Year", y = "Max height (cm)", fill = "", title = "Core Winter Range Plots: All Shrub Species", caption = "Line intercept data")

### All shrubs, site type, fenced/unfenced
#### Table of mean max height
csv.all.lc.li.df %>%
filter(timeClass == "BL" | timeClass == "2013" | timeClass == "2018") %>%
group_by(timeClass, SITE_TYPE, FENCED) %>%
descr(MAX_HEIGHT_CM, stats = "common") %>%
summarytools::tb() %>%
mutate(across(c('mean','sd','pct.valid'), ~round(.,digits = 1))) %>%
gt() %>%
tab_header(title = "LI, Mean max height", subtitle = "All shrubs, all site types, fenced/unfenced")
| timeClass |
SITE_TYPE |
FENCED |
variable |
mean |
sd |
min |
med |
max |
n.valid |
pct.valid |
| BL |
WC |
Unfenced |
MAX_HEIGHT_CM |
95.0 |
101.1 |
3.0 |
60 |
535 |
91 |
91.9 |
| BL |
WC |
Fenced |
MAX_HEIGHT_CM |
66.8 |
31.8 |
5.0 |
65 |
190 |
63 |
94.0 |
| BL |
WNC |
Unfenced |
MAX_HEIGHT_CM |
166.6 |
128.4 |
25.0 |
120 |
520 |
79 |
92.9 |
| 2013 |
WC |
Unfenced |
MAX_HEIGHT_CM |
106.2 |
115.5 |
15.0 |
60 |
750 |
158 |
95.8 |
| 2013 |
WC |
Fenced |
MAX_HEIGHT_CM |
82.6 |
59.5 |
15.0 |
65 |
300 |
89 |
94.7 |
| 2013 |
WNC |
Unfenced |
MAX_HEIGHT_CM |
222.2 |
138.8 |
15.0 |
210 |
500 |
95 |
96.0 |
| 2018 |
WC |
Unfenced |
MAX_HEIGHT_CM |
106.0 |
110.8 |
0.7 |
60 |
810 |
210 |
95.0 |
| 2018 |
WC |
Fenced |
MAX_HEIGHT_CM |
121.1 |
68.5 |
10.0 |
120 |
290 |
199 |
97.5 |
| 2018 |
WNC |
Unfenced |
MAX_HEIGHT_CM |
174.7 |
129.3 |
10.0 |
130 |
610 |
163 |
97.0 |
| 2018 |
WK |
Unfenced |
MAX_HEIGHT_CM |
56.2 |
44.8 |
15.0 |
50 |
250 |
24 |
96.0 |
| 2018 |
WK |
Fenced |
MAX_HEIGHT_CM |
108.3 |
24.0 |
65.0 |
110 |
155 |
23 |
100.0 |
### All shrubs, site type, fenced/unfenced, burned/unburned
## Boxplot
csv.all.lc.li.df %>%
filter(pType == "willow") %>%
mutate(yr = as.character(yr)) %>%
filter(yr == 2008 | yr == 2013 | yr == 2018) %>%
ggplot(aes(timeClass, MAX_HEIGHT_CM)) +
geom_boxplot(aes(fill = FENCED), outlier.shape = NA) +
geom_hline(aes(yintercept = 110), color = "red", lty = "dashed", size = 1) +
ylim(0,300) +
labs(x="", y= "Height (cm)", title = "Maximum shrub height", caption = "WC, All shrub species line intercept plots") +
scale_fill_manual(values = c("grey90","grey50")) +
theme_minimal() +
# theme(axis.text.x=element_text(angle = 45, hjust = 1)) #+
facet_wrap(BURNED~SITE_TYPE)

# ggsave("./output/figures_exported/WCWNCWK_LI_shrubHt_FenBur_boxplot.png", width = 6.5, height = 4.875)
Willow Species
csv.wil.lc.li.df <- csv.all.lc.li.df %>%
filter(str_detect(SPECIES_CODE, "^SA")) %>%
mutate(FENCED = fct_rev(FENCED))
## Boxplot
csv.wil.lc.li.df %>%
filter(pType == "willow") %>%
mutate(yr = as.character(yr)) %>%
filter(yr == 2008 | yr == 2013 | yr == 2018) %>%
ggplot(aes(timeClass, MAX_HEIGHT_CM)) +
geom_boxplot(aes(fill = FENCED), outlier.shape = NA) +
geom_hline(aes(yintercept = 110), color = "red", lty = "dashed", size = 1) +
ylim(0,600) +
labs(x="", y= "Height (cm)", title = "Maximum willow height", caption = "WC, All willow species line intercept plots") +
scale_fill_manual(values = c("grey90","grey50")) +
theme_minimal() +
facet_wrap(~SITE_TYPE)

### All willow species, site type, fenced/unfenced
#### Table of mean max height
csv.wil.lc.li.df %>%
filter(timeClass == "BL" | timeClass == "2013" | timeClass == "2018") %>%
group_by(timeClass, SITE_TYPE, FENCED) %>%
descr(MAX_HEIGHT_CM, stats = "common") %>%
summarytools::tb() %>%
mutate(across(c('mean','sd','pct.valid'), ~round(.,digits = 1))) %>%
gt() %>%
tab_header(title = "Maximum height", subtitle = "All willows combined, all site types, fenced/unfenced")
| timeClass |
SITE_TYPE |
FENCED |
variable |
mean |
sd |
min |
med |
max |
n.valid |
pct.valid |
| BL |
WC |
Fenced |
MAX_HEIGHT_CM |
72.7 |
36.0 |
10 |
70.0 |
190 |
38 |
97.4 |
| BL |
WC |
Unfenced |
MAX_HEIGHT_CM |
97.3 |
98.3 |
3 |
60.0 |
440 |
66 |
97.1 |
| BL |
WNC |
Unfenced |
MAX_HEIGHT_CM |
170.0 |
127.4 |
25 |
120.0 |
520 |
74 |
100.0 |
| 2013 |
WC |
Fenced |
MAX_HEIGHT_CM |
109.2 |
62.4 |
25 |
97.5 |
300 |
52 |
100.0 |
| 2013 |
WC |
Unfenced |
MAX_HEIGHT_CM |
129.3 |
109.3 |
20 |
80.0 |
470 |
72 |
100.0 |
| 2013 |
WNC |
Unfenced |
MAX_HEIGHT_CM |
221.2 |
139.4 |
15 |
215.0 |
500 |
82 |
100.0 |
| 2018 |
WC |
Fenced |
MAX_HEIGHT_CM |
151.3 |
59.2 |
30 |
145.0 |
290 |
135 |
99.3 |
| 2018 |
WC |
Unfenced |
MAX_HEIGHT_CM |
130.5 |
102.4 |
20 |
95.0 |
450 |
99 |
100.0 |
| 2018 |
WNC |
Unfenced |
MAX_HEIGHT_CM |
175.3 |
119.9 |
10 |
135.0 |
610 |
139 |
100.0 |
| 2018 |
WK |
Fenced |
MAX_HEIGHT_CM |
108.3 |
24.0 |
65 |
110.0 |
155 |
23 |
100.0 |
| 2018 |
WK |
Unfenced |
MAX_HEIGHT_CM |
50.8 |
15.5 |
30 |
52.5 |
75 |
18 |
100.0 |
### All Willow Species, site type, fenced/unfenced, burned/unburned
## Boxplot
csv.wil.lc.li.df %>%
filter(pType == "willow") %>%
mutate(yr = as.character(yr)) %>%
filter(yr == 2008 | yr == 2013 | yr == 2018) %>%
ggplot(aes(timeClass, MAX_HEIGHT_CM)) +
geom_boxplot(aes(fill = FENCED), outlier.shape = NA) +
geom_hline(aes(yintercept = 110), color = "red", lty = "dashed", size = 1) +
ylim(0,600) +
labs(x="", y= "Height (cm)", title = "Maximum shrub height", caption = "WC, All willow species line intercept plots") +
scale_fill_manual(values = c("grey90","grey50")) +
theme_minimal() +
facet_wrap(BURNED~SITE_TYPE)

#### Table of mean max height
csv.wil.lc.li.df %>%
filter(timeClass == "BL" | timeClass == "2013" | timeClass == "2018") %>%
group_by(timeClass, SITE_TYPE, FENCED, BURNED) %>%
descr(MAX_HEIGHT_CM, stats = "common") %>%
summarytools::tb() %>%
mutate(across(c('mean','sd','pct.valid'), ~round(.,digits = 1))) %>%
gt() %>%
tab_header(title = "Maximum height", subtitle = "All willow, all site types, fenced/unfenced, burned/unburned")
| timeClass |
SITE_TYPE |
FENCED |
BURNED |
variable |
mean |
sd |
min |
med |
max |
n.valid |
pct.valid |
| BL |
WC |
Fenced |
Burned |
MAX_HEIGHT_CM |
46.9 |
31.6 |
10 |
45.0 |
110 |
8 |
100.0 |
| BL |
WC |
Fenced |
Unburned |
MAX_HEIGHT_CM |
79.6 |
34.4 |
30 |
70.0 |
190 |
30 |
96.8 |
| BL |
WC |
Unfenced |
Burned |
MAX_HEIGHT_CM |
108.2 |
95.1 |
40 |
76.0 |
275 |
5 |
100.0 |
| BL |
WC |
Unfenced |
Unburned |
MAX_HEIGHT_CM |
96.4 |
99.3 |
3 |
50.0 |
440 |
61 |
96.8 |
| BL |
WNC |
Unfenced |
Unburned |
MAX_HEIGHT_CM |
170.0 |
127.4 |
25 |
120.0 |
520 |
74 |
100.0 |
| 2013 |
WC |
Fenced |
Burned |
MAX_HEIGHT_CM |
66.7 |
28.1 |
25 |
60.0 |
110 |
18 |
100.0 |
| 2013 |
WC |
Fenced |
Unburned |
MAX_HEIGHT_CM |
131.8 |
64.1 |
40 |
112.5 |
300 |
34 |
100.0 |
| 2013 |
WC |
Unfenced |
Burned |
MAX_HEIGHT_CM |
45.0 |
21.2 |
30 |
45.0 |
60 |
2 |
100.0 |
| 2013 |
WC |
Unfenced |
Unburned |
MAX_HEIGHT_CM |
131.7 |
109.8 |
20 |
80.0 |
470 |
70 |
100.0 |
| 2013 |
WNC |
Unfenced |
Unburned |
MAX_HEIGHT_CM |
221.2 |
139.4 |
15 |
215.0 |
500 |
82 |
100.0 |
| 2018 |
WC |
Fenced |
Burned |
MAX_HEIGHT_CM |
134.6 |
37.8 |
50 |
142.5 |
225 |
66 |
100.0 |
| 2018 |
WC |
Fenced |
Unburned |
MAX_HEIGHT_CM |
167.2 |
70.8 |
30 |
175.0 |
290 |
69 |
98.6 |
| 2018 |
WC |
Unfenced |
Burned |
MAX_HEIGHT_CM |
32.5 |
6.5 |
25 |
32.5 |
40 |
4 |
100.0 |
| 2018 |
WC |
Unfenced |
Unburned |
MAX_HEIGHT_CM |
134.6 |
102.5 |
20 |
95.0 |
450 |
95 |
100.0 |
| 2018 |
WNC |
Unfenced |
Unburned |
MAX_HEIGHT_CM |
175.3 |
119.9 |
10 |
135.0 |
610 |
139 |
100.0 |
| 2018 |
WK |
Fenced |
Unburned |
MAX_HEIGHT_CM |
108.3 |
24.0 |
65 |
110.0 |
155 |
23 |
100.0 |
| 2018 |
WK |
Unfenced |
Unburned |
MAX_HEIGHT_CM |
50.8 |
15.5 |
30 |
52.5 |
75 |
18 |
100.0 |
csv.all.lc.li.df %>%
filter(yr !=2009 & yr != 2015 & yr !=2017) %>%
filter(SITE_TYPE != "WK") %>%
filter(SPECIES_CODE == "SAMO" | SPECIES_CODE == "SAGE" | SPECIES_CODE == "SAPL" ) %>%
filter(!is.na(MAX_HEIGHT_CM)) %>%
group_by(SPECIES_CODE, timeClass, FENCED) %>%
descr(MAX_HEIGHT_CM, stats = "common") %>%
tb() %>%
select(-variable) %>%
mutate(across(where(is.numeric), round, 1)) %>%
gt() %>%
tab_header(title = "Maximum height: common willow species comparisons", subtitle = "Combined WC and WNC; SAPL, SAGE, and SAMO")
| SPECIES_CODE |
timeClass |
FENCED |
mean |
sd |
min |
med |
max |
n.valid |
pct.valid |
| SAGE |
BL |
Unfenced |
210.6 |
152.1 |
3 |
245.0 |
455 |
21 |
100 |
| SAGE |
2013 |
Unfenced |
227.2 |
148.3 |
30 |
250.0 |
490 |
27 |
100 |
| SAGE |
2013 |
Fenced |
123.0 |
35.1 |
85 |
115.0 |
180 |
5 |
100 |
| SAGE |
2018 |
Unfenced |
157.6 |
129.0 |
30 |
85.0 |
410 |
25 |
100 |
| SAGE |
2018 |
Fenced |
156.0 |
65.6 |
60 |
155.0 |
270 |
15 |
100 |
| SAMO |
BL |
Unfenced |
115.1 |
111.0 |
10 |
70.0 |
440 |
83 |
100 |
| SAMO |
BL |
Fenced |
71.1 |
36.8 |
10 |
70.0 |
190 |
35 |
100 |
| SAMO |
2013 |
Unfenced |
159.3 |
127.9 |
15 |
100.0 |
500 |
77 |
100 |
| SAMO |
2013 |
Fenced |
113.3 |
74.1 |
30 |
95.0 |
300 |
23 |
100 |
| SAMO |
2018 |
Unfenced |
161.6 |
115.9 |
10 |
130.0 |
610 |
132 |
100 |
| SAMO |
2018 |
Fenced |
155.7 |
71.4 |
40 |
147.5 |
280 |
42 |
100 |
| SAPL |
BL |
Unfenced |
164.7 |
117.6 |
25 |
150.0 |
520 |
19 |
100 |
| SAPL |
BL |
Fenced |
82.5 |
17.7 |
70 |
82.5 |
95 |
2 |
100 |
| SAPL |
2013 |
Unfenced |
154.0 |
121.5 |
40 |
102.5 |
450 |
34 |
100 |
| SAPL |
2013 |
Fenced |
108.8 |
66.8 |
25 |
97.5 |
270 |
16 |
100 |
| SAPL |
2018 |
Unfenced |
124.0 |
95.3 |
20 |
95.0 |
380 |
36 |
100 |
| SAPL |
2018 |
Fenced |
147.3 |
68.0 |
30 |
140.0 |
290 |
28 |
100 |
## salix monitcola
csv.all.lc.li.df %>%
filter(pType == "willow") %>%
filter(yr == 2008 | yr == 2013 | yr == 2018) %>%
filter(!is.na(MAX_HEIGHT_CM)) %>%
filter(SPECIES_CODE =="SAMO") %>%
filter(SITE_TYPE == "WC") %>%
ggplot(aes(timeClass, MAX_HEIGHT_CM)) +
geom_boxplot(aes(fill=FENCED), color = 'black', outlier.shape = NA) +
geom_hline(aes(yintercept = 110), color = "red", lty = "dashed", size = 1) +
theme_minimal() +
ylim(0,320) +
scale_fill_manual(values = c("grey90","grey50")) +
labs(x = "Year", y = "Max height (cm)", fill = "", title = "Core Winter Range Plots: SAMO only", caption = "Line intercept data")

## salix geyeriana
csv.all.lc.li.df %>%
filter(pType == "willow") %>%
filter(yr == 2008 | yr == 2013 | yr == 2018) %>%
filter(!is.na(MAX_HEIGHT_CM)) %>%
filter(SPECIES_CODE =="SAGE") %>%
filter(SITE_TYPE == "WC") %>%
ggplot(aes(timeClass, MAX_HEIGHT_CM)) +
geom_boxplot(aes(fill=FENCED), color = 'black', outlier.shape = NA) +
geom_hline(aes(yintercept = 110), color = "red", lty = "dashed", size = 1) +
theme_minimal() +
ylim(0,320) +
scale_fill_manual(values = c("grey90","grey50")) +
labs(x = "Year", y = "Max height (cm)", fill = "", title = "Core Winter Range Plots: SAGE only", caption = "Line intercept data")

## Salix planifolia
csv.all.lc.li.df %>%
filter(pType == "willow") %>%
filter(yr == 2008 | yr == 2013 | yr == 2018) %>%
filter(!is.na(MAX_HEIGHT_CM)) %>%
filter(SPECIES_CODE =="SAPL") %>%
filter(SITE_TYPE == "WC") %>%
ggplot(aes(timeClass, MAX_HEIGHT_CM)) +
geom_boxplot(aes(fill=FENCED), color = 'black', outlier.shape = NA) +
geom_hline(aes(yintercept = 110), color = "red", lty = "dashed", size = 1) +
theme_minimal() +
ylim(0,320) +
scale_fill_manual(values = c("grey90","grey50")) +
labs(x = "Year", y = "Max height (cm)", fill = "", title = "Core Winter Range Plots: SAPL only", caption = "Line intercept data")

csv.all.lc.li.df %>%
filter(pType == "willow") %>%
filter(SPECIES_CODE != "SAXX") %>%
filter(yr == 2008 | yr == 2013 | yr == 2018) %>%
filter(!is.na(MAX_HEIGHT_CM)) %>%
filter(FENCED == "Unfenced" | FENCED == "Fenced") %>%
group_by(yr, SPECIES_CODE, FENCED) %>%
summarise(mean.ht = mean(MAX_HEIGHT_CM, na.rm = TRUE)) %>%
pivot_wider(names_from = yr, values_from = c(mean.ht)) %>%
gt::gt() %>%
fmt_number(
columns = vars('2008','2013','2018'),
decimals = 1,
use_seps = FALSE
) %>%
tab_header("Mean height by shrub species")
| FENCED |
2008 |
2013 |
2018 |
| BEGL |
| Fenced |
41.7 |
130.0 |
165.0 |
| Unfenced |
NA |
126.7 |
108.8 |
| BEOC |
| Unfenced |
322.5 |
348.0 |
176.9 |
| Fenced |
NA |
45.0 |
82.5 |
| DAFR |
| Unfenced |
52.1 |
49.3 |
51.8 |
| Fenced |
60.0 |
42.9 |
52.4 |
| SAGE |
| Unfenced |
210.6 |
227.2 |
153.7 |
| Fenced |
NA |
123.0 |
141.5 |
| SALUC |
| Unfenced |
80.0 |
NA |
NA |
| SAMO |
| Unfenced |
115.1 |
159.3 |
157.8 |
| Fenced |
71.1 |
113.3 |
149.9 |
| SAPL |
| Unfenced |
164.7 |
154.0 |
107.2 |
| Fenced |
82.5 |
108.8 |
144.8 |
| ALIN |
| Unfenced |
NA |
330.0 |
345.3 |
| Fenced |
NA |
NA |
170.0 |
| LOIN |
| Unfenced |
NA |
112.5 |
122.5 |
| Fenced |
NA |
40.0 |
93.3 |
| POTR |
| Unfenced |
NA |
126.9 |
NA |
| RIIN |
| Unfenced |
NA |
78.6 |
59.1 |
| ROWO |
| Unfenced |
NA |
45.9 |
43.6 |
| Fenced |
NA |
NA |
33.2 |
| RUDE |
| Unfenced |
NA |
50.0 |
NA |
| SABE |
| Unfenced |
NA |
239.6 |
137.8 |
| Fenced |
NA |
NA |
131.1 |
| SADR |
| Unfenced |
NA |
231.7 |
253.1 |
| Fenced |
NA |
NA |
114.2 |
| SAPE |
| Fenced |
NA |
86.2 |
147.3 |
| Unfenced |
NA |
NA |
63.3 |
| JUCO |
| Unfenced |
NA |
NA |
40.0 |
| RUID |
| Unfenced |
NA |
NA |
35.0 |
| SABR |
| Unfenced |
NA |
NA |
40.0 |
| SAER |
| Fenced |
NA |
NA |
156.0 |