Skip to content

Commit f4b3dc2

Browse files
author
Nick Heyek
committed
Plot improvements, heatmap improvements
1 parent f55584e commit f4b3dc2

3 files changed

Lines changed: 73 additions & 4 deletions

File tree

experiment-trait-data-visualizer/app.R

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ render_season_ui <- function(season_name) {
4949
),
5050
tabPanel('Map',
5151
div(class = 'map-container push-out',
52+
p(class = 'map-message', 'Showing data from latest recorded observation date'),
5253
leafletOutput(paste0('site_map_', season_name), width = '750px', height = '1000px')
5354
)
5455
)
@@ -93,21 +94,25 @@ render_trait_plot <- function(season_name, input, output, full_cache_data) {
9394
plot_data <- selected_season_data[[ 'trait_data' ]][[ selected_variable ]][[ 'traits' ]]
9495
data_max <- max(plot_data[[ 'mean' ]])
9596

97+
title <- selected_variable
9698
units <- selected_season_data[[ 'trait_data' ]][[ selected_variable ]][[ 'units' ]]
99+
if (units != '')
100+
title <- paste0(selected_variable, ' (', units, ')')
97101

98102
# generate timeseries of boxplots from mean value
99103
ggplot(plot_data, aes(as.Date(date), mean)) +
100104
geom_boxplot(aes(group = cut_width(as.Date(date), 1)), outlier.alpha = 0.1) +
101105

102106
{
103107
if (selected_cultivar != 'None') {
104-
geom_point(data = subset(plot_data, cultivar_name == selected_cultivar),
105-
size = 1, color = "red", aes(x = as.Date(date), y = mean))
108+
title <- paste0(title, ' for ', selected_cultivar)
109+
geom_line(data = subset(plot_data, cultivar_name == selected_cultivar),
110+
size = 0.5, color = "#00C49F", aes(x = as.Date(date), y = mean, group = site_id))
106111
}
107112
} +
108113

109114
labs(
110-
title = paste0(selected_variable, '\n'),
115+
title = paste0(title, '\n'),
111116
x = "Observation Dates",
112117
y = units
113118
) +
@@ -194,11 +199,22 @@ render_map <- function(season_name, input, output, full_cache_data) {
194199
output[[ paste0('site_map_', season_name) ]] <- renderLeaflet({
195200

196201
req(input[[ paste0('selected_variable_', season_name) ]])
202+
req(input[[ paste0('selected_cultivar_', season_name) ]])
203+
197204
selected_variable <- input[[ paste0('selected_variable_', season_name) ]]
205+
selected_cultivar <- input[[ paste0('selected_cultivar_', season_name) ]]
198206

199207
traits <- full_cache_data[[ season_name ]][[ 'trait_data' ]][[ selected_variable ]][[ 'traits' ]]
200208

201-
render_site_map(traits)
209+
if (selected_cultivar != 'None')
210+
traits <- subset(traits, cultivar_name == selected_cultivar)
211+
212+
units <- full_cache_data[[ season_name ]][[ 'trait_data' ]][[ selected_variable ]][[ 'units' ]]
213+
if (units != '')
214+
units <- paste0('(', units, ')')
215+
legend_title <- paste0(selected_variable, ' ', units)
216+
217+
render_site_map(traits, legend_title)
202218
})
203219
}
204220

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
library(rgeos)
2+
library(dplyr)
3+
4+
bety_src <- src_postgres(
5+
dbname = Sys.getenv('bety_dbname'),
6+
password = Sys.getenv('bety_password'),
7+
host = Sys.getenv('bety_host'),
8+
port = Sys.getenv('bety_port'),
9+
user = Sys.getenv('bety_user')
10+
)
11+
12+
render_site_map <- function(traits, legend_title) {
13+
14+
site_ids <- na.omit(unique(traits[[ 'site_id' ]]))
15+
sites <- tbl(bety_src, sql("select ST_AsText(sites.geometry) AS geometry, id from sites")) %>%
16+
filter(!is.na(geometry)) %>%
17+
filter(id %in% site_ids) %>%
18+
collect() %>% data.frame()
19+
20+
latest_date <- max(as.Date(traits[['date']]))
21+
latest_traits <- subset(traits, as.Date(date) == latest_date)
22+
23+
map <- leaflet(options = leafletOptions(minZoom = 20, maxZoom = 22)) %>% addTiles()
24+
25+
pal <- colorNumeric(
26+
palette = "GnBu",
27+
domain = latest_traits[[ 'mean' ]]
28+
)
29+
30+
if (nrow(sites) > 0) {
31+
for (i in 1:nrow(sites)){
32+
site <- sites[i,]
33+
34+
geo_object <- readWKT(site[['geometry']])
35+
if ('polygons' %in% names(attributes(geo_object))) {
36+
37+
trait <- subset(latest_traits, site_id == site[[ 'id' ]])
38+
map <- addPolygons(map, data = geo_object, color = pal(trait[['mean']]), smoothFactor = 0.5)
39+
}
40+
}
41+
}
42+
43+
legend_title <- paste0(legend_title, '<br>', latest_date)
44+
45+
map <- addLegend(map, "topright", pal = pal,
46+
title = legend_title,
47+
values = traits[[ 'mean' ]])
48+
map
49+
}

experiment-trait-data-visualizer/www/style.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,8 @@ html, body {
2424
width: 750px;
2525
margin-left: auto;
2626
margin-right: auto;
27+
}
28+
.map-message {
29+
font-style: italic;
30+
font-size: 18px;
2731
}

0 commit comments

Comments
 (0)