@@ -36,8 +36,20 @@ plot_dynamic <- function(
3636 }
3737 )
3838
39- all_values <- dpp $ moving_averages [,- 1 ]
40- value_stats <- apply(all_values , 1 , quantile , probs = c(0.05 , 0.25 , 0.5 , 0.75 , 0.95 ), na.rm = TRUE )
39+ if (is.null(pixelClusters )){
40+ all_values <- dpp $ moving_averages [,- 1 ]
41+ value_stats <- apply(all_values , 1 , quantile , probs = c(0.05 , 0.25 , 0.5 , 0.75 , 0.95 ), na.rm = TRUE )
42+ } else {
43+ cn <- sort(unique(pixelClusters ))
44+ all_values <- lapply(cn , function (cl_i ) {
45+ dpp $ moving_averages [,names(pixelClusters )[pixelClusters == cl_i ]]
46+ })
47+ cluster_stats <- value_stats <- lapply(all_values , function (x ){
48+ apply(x , 1 , quantile , probs = c(0.05 , 0.25 , 0.5 , 0.75 , 0.95 ), na.rm = TRUE )
49+ })
50+ value_stats <- do.call(cbind , value_stats )
51+ }
52+
4153
4254 # Plot Dynamic
4355 v_lines <- as.numeric(format(x = as.Date(
@@ -68,7 +80,7 @@ plot_dynamic <- function(
6880 ylim <- c(yrange [1 ] - diff(yrange ) * 0.1 , yrange [2 ] + diff(yrange ) * 0.1 )
6981
7082 }
71- plot(x = 1 : 365 , y = all_values [, 1 ] , type = " n" ,
83+ plot(x = 1 : 365 , y = rep( 0 , 365 ) , type = " n" ,
7284 ylab = ylab , xlab = " Day of the Year" ,
7385 ylim = ylim ,
7486 main = paste0(lakeName , ifelse(
@@ -98,11 +110,11 @@ plot_dynamic <- function(
98110
99111 lines(x = 1 : 365 , y = value_stats [" 50%" ,], lwd = 2 , col = cv [1 ])
100112 } else {
101- cn <- sort(unique(pixelClusters ))
102113 n_cn <- summary(as.factor(pixelClusters ))
114+ i <- 1
103115 for (cl_i in cn ){
104- all_values <- dpp $ moving_averages [,names( pixelClusters )[ pixelClusters == cl_i ]]
105- value_stats <- apply( all_values , 1 , quantile , probs = c( 0.05 , 0.25 , 0.5 , 0.75 , 0.95 ), na.rm = TRUE )
116+ value_stats <- cluster_stats [[ i ]]
117+ i <- i + 1
106118
107119 if (! smallBandOnly ){
108120 polygon(x = c(1 : 365 , 365 : 1 ),
@@ -119,12 +131,11 @@ plot_dynamic <- function(
119131 " top" ,
120132 legend = paste0(" C" , cn ," (n=" , format(n_cn , big.mark = " ," ), " )" ),
121133 fill = cv [cn ],
122- horiz = TRUE ,
123134 bg = " black" ,
124135 box.lwd = NA ,
125136 cex = 0.9 ,
126137 text.col = " white" ,
127- ncol = 5
138+ ncol = ifelse(length( cn ) < 5 , length( cn ), 5 )
128139 )
129140 }
130141}
0 commit comments