Nothing
## ----setup, echo = FALSE------------------------------------------------------
#.................................................
# REFERENCES for cache:
#
# - https://yihui.org/knitr/demo/cache/
# - https://yihui.org/knitr/options/#cache
# - https://stackoverflow.com/a/52163751
# - https://github.com/yihui/knitr/issues/994
# - https://stackoverflow.com/a/10629121
#.................................................
build_vignette_with_user_id_token = FALSE
if (build_vignette_with_user_id_token) {
knitr::opts_chunk$set(fig.width = 12,
fig.height = 10,
fig.align = "center",
warning = FALSE,
message = FALSE,
eval = TRUE,
echo = TRUE,
cache = TRUE,
cache.rebuild = TRUE) # for 'cache.rebuild' see the references
USER_ID = 'use the true user-id here'
token = 'use the true token here'
}
if (!build_vignette_with_user_id_token) {
knitr::opts_chunk$set(fig.width = 12,
fig.height = 10,
fig.align = "center",
warning = FALSE,
message = FALSE)
file_heart = system.file('tests_vignette_rds', 'heart_dat.RDS', package = 'fitbitViz')
file_sleep = system.file('tests_vignette_rds', 'sleep_ts.RDS', package = 'fitbitViz')
file_tcx = system.file('tests_vignette_rds', 'res_tcx.RDS', package = 'fitbitViz')
file_rst = system.file('tests_vignette_rds', 'raysh_rst.tif', package = 'fitbitViz')
heart_dat = readRDS(file = file_heart)
sleep_ts = readRDS(file = file_sleep)
res_tcx = readRDS(file = file_tcx)
raysh_rst = raster::raster(x = file_rst)
}
## ---- eval = FALSE------------------------------------------------------------
#
# require(fitbitViz)
#
# #..................
# # parameter setting
# #..................
#
# USER_ID = 'My user-id' # Specify here your 'user-id'
# token = "My token" # Specify here your 'token'
#
## ---- eval = FALSE------------------------------------------------------------
#
# #..............................................
# # Refresh token once it expires (after 8 hours)
# #..............................................
#
# client_id = 'xxxxxx'
# client_secret = 'xxxxxxxxxxxxxxxxxx'
# refresh_token = 'xxxxxxxxxxxxxxxxxxxxxxxx'
#
# # refresh the token
# new_token = refresh_token_app(client_id = client_id,
# client_secret = client_secret,
# refresh_token = refresh_token)
#
# # a named list that includes the new 'access_token' and 'refresh_token'
# str(new_token)
#
## -----------------------------------------------------------------------------
WEEK = 11 # for this use case pick the 11th week of the year 2021
num_character_error = 135 # print that many character in case of an error
weeks_2021 = fitbitViz:::split_year_in_weeks(year = 2021) # split a year in weeks
# Start the week at monday (see: https://github.com/tidyverse/lubridate/issues/509)
date_start = lubridate::floor_date(lubridate::ymd(weeks_2021[WEEK]), unit = 'weeks') + 1
# Add 6 days to the 'date_start' variable to come to a 7-days plot
date_end = date_start + 6
sleep_time_begins = "00H 40M 0S"
sleep_time_ends = "08H 00M 0S"
VERBOSE = FALSE # disable verbosity
## ---- echo = TRUE, out.height = '1000px', eval = FALSE------------------------
#
# #.......................
# # heart rate time series
# #.......................
#
# heart_dat = fitbitViz::heart_rate_time_series(user_id = USER_ID,
# token = token,
# date_start = as.character(date_start),
# date_end = as.character(date_end),
# time_start = '00:00',
# time_end = '23:59',
# detail_level = '1min',
# ggplot_intraday = TRUE,
# ggplot_ncol = 2,
# ggplot_nrow = 4,
# verbose = VERBOSE,
# show_nchar_case_error = num_character_error)
# heart_dat$plt
#
## ---- echo = FALSE------------------------------------------------------------
#...............................................
# DT::datatable() as option to download the data [ heart rate time series ]
#...............................................
dt_heart_rate_data = data.table::rbindlist(heart_dat$heart_rate_intraday)
dt_heart_rate = DT::datatable(data = dt_heart_rate_data,
rownames = FALSE,
extensions = 'Buttons',
options = list(pageLength = 10,
dom = 'Bfrtip',
buttons = list(list(extend = 'csv',
filename = 'heart_rate_time_series'))))
dt_heart_rate
## ---- echo = TRUE, out.height = '1000px', eval = FALSE------------------------
#
# #............................
# # heart rate intraday heatmap [ plot options: https://yihui.org/knitr/options/#plots ]
# #............................
#
# heart_intra = heart_dat$heart_rate_intraday
#
# hrt_heat = fitbitViz::heart_rate_heatmap(heart_rate_intraday_data = heart_intra,
# angle_x_axis = 0)
# hrt_heat
#
## ---- echo = TRUE, eval = FALSE-----------------------------------------------
#
# #.......................
# # heart rate variability
# #.......................
#
# hrt_rt_var = fitbitViz::fitbit_data_type_by_date(user_id = USER_ID,
# token = token,
# date = as.character(date_start),
# type = 'hrv',
# plot = TRUE,
# show_nchar_case_error = num_character_error)
#
## ---- echo = TRUE, out.height = '1000px', eval = FALSE------------------------
#
# #.......................
# # sleep data time series
# #.......................
#
# sleep_ts = fitbitViz::sleep_time_series(user_id = USER_ID,
# token = token,
# date_start = as.character(date_start),
# date_end = as.character(date_end),
# ggplot_color_palette = 'ggsci::blue_material',
# ggplot_ncol = 2,
# ggplot_nrow = 4,
# show_nchar_case_error = num_character_error,
# verbose = VERBOSE)
# sleep_ts$plt_lev_segments
#
## ---- echo = FALSE------------------------------------------------------------
#.....................................
# DT::datatable() of the sleep heatmap
#.....................................
dt_sleep_heatmap = DT::datatable(data = sleep_ts$heatmap_data,
rownames = FALSE,
extensions = 'Buttons',
options = list(pageLength = 10,
dom = 'Bfrtip',
buttons = list(list(extend = 'csv',
filename = 'sleep_heat_map'))))
dt_sleep_heatmap
## ---- echo = TRUE, eval = FALSE-----------------------------------------------
#
# #...................
# # extract the log-id (required for the GPS data)
# #...................
#
# log_id = fitbitViz::extract_LOG_ID(user_id = USER_ID,
# token = token,
# after_Date = as.character(date_start),
# limit = 10,
# sort = 'asc',
# verbose = VERBOSE)
# # log_id
#
## ---- echo = TRUE, eval = FALSE-----------------------------------------------
#
# #....................................................
# # return the gps-ctx data.table for the output log-id
# #....................................................
#
# res_tcx = fitbitViz::GPS_TCX_data(log_id = log_id,
# user_id = USER_ID,
# token = token,
# time_zone = 'Europe/Athens',
# verbose = VERBOSE)
# # res_tcx
#
## ---- echo = TRUE-------------------------------------------------------------
#................................
# Create the Leaflet / LeafGL Map
#................................
res_lft = fitbitViz::leafGL_point_coords(dat_gps_tcx = res_tcx,
color_points_column = 'AltitudeMeters',
provider = leaflet::providers$Esri.WorldImagery,
option_viewer = rstudioapi::viewer,
CRS = 4326)
## ---- echo = TRUE-------------------------------------------------------------
res_lft
## ---- echo = FALSE------------------------------------------------------------
#.................................
# DT::datatable() for the GPS data
#.................................
dt_gps_tcx = DT::datatable(data = res_tcx,
rownames = FALSE,
extensions = 'Buttons',
class = 'white-space: nowrap', # unwrap the column-contents so that rows become flat, see: https://github.com/rstudio/DT/issues/353
options = list(pageLength = 10,
dom = 'Bfrtip',
buttons = list(list(extend = 'csv',
filename = 'GPS_TCX_data'))))
dt_gps_tcx
## ---- echo = FALSE, eval = FALSE----------------------------------------------
#
# # reference for the st_buffer function: https://stackoverflow.com/a/54754935
#
## ---- echo = TRUE-------------------------------------------------------------
#...................................................
# compute the sf-object buffer and the raster-extend (1000 meters buffer)
#...................................................
sf_rst_ext = fitbitViz::extend_AOI_buffer(dat_gps_tcx = res_tcx,
buffer_in_meters = 1000,
CRS = 4326,
verbose = VERBOSE)
# sf_rst_ext
## ---- echo = TRUE, eval = FALSE-----------------------------------------------
#
# #..................................................................
# # Download the Copernicus DEM 30m elevation data
# # there is also the option to download the DEM 90m elevation data
# # which is of lower resolution but the image size is smaller which
# # means faster download
# #..................................................................
#
# dem_dir = tempdir()
# # dem_dir
#
# dem30 = CopernicusDEM::aoi_geom_save_tif_matches(sf_or_file = sf_rst_ext$sfc_obj,
# dir_save_tifs = dem_dir,
# resolution = 30,
# crs_value = 4326,
# threads = parallel::detectCores(),
# verbose = VERBOSE)
#
# TIF = list.files(dem_dir, pattern = '.tif', full.names = T)
# # TIF
#
# if (length(TIF) > 1) {
#
# #....................................................
# # create a .VRT file if I have more than 1 .tif files
# #....................................................
#
# file_out = file.path(dem_dir, 'VRT_mosaic_FILE.vrt')
#
# vrt_dem30 = CopernicusDEM::create_VRT_from_dir(dir_tifs = dem_dir,
# output_path_VRT = file_out,
# verbose = VERBOSE)
# }
#
# if (length(TIF) == 1) {
#
# #..................................................
# # if I have a single .tif file keep the first index
# #..................................................
#
# file_out = TIF[1]
# }
#
# #.......................................
# # crop the elevation DEM based on the
# # coordinates extent of the GPS-CTX data
# #.......................................
#
# raysh_rst = fitbitViz::crop_DEM(tif_or_vrt_dem_file = file_out,
# sf_buffer_obj = sf_rst_ext$sfc_obj,
# verbose = VERBOSE)
# # terra::plot(raysh_rst)
#
## ---- echo = TRUE-------------------------------------------------------------
linestring_dat = fitbitViz::gps_lat_lon_to_LINESTRING(dat_gps_tcx = res_tcx,
CRS = 4326,
time_split_asc_desc = NULL,
verbose = VERBOSE)
## ---- echo = TRUE-------------------------------------------------------------
idx_3m = c(which.min(res_tcx$AltitudeMeters),
as.integer(length(res_tcx$AltitudeMeters) / 2),
which.max(res_tcx$AltitudeMeters))
cols_3m = c('latitude', 'longitude', 'AltitudeMeters')
dat_3m = res_tcx[idx_3m, ..cols_3m]
## ---- echo = TRUE, eval = FALSE-----------------------------------------------
#
# #.....................................................
# # Conversion of the 'SpatRaster' to a raster object
# # because the 'rayshader' package accepts only rasters
# #.....................................................
#
# rst_obj = raster::raster(raysh_rst)
# raster::projection(rst_obj) <- terra::crs(raysh_rst, proj = TRUE)
#
#
# snapshot_rayshader_path = file.path(tempdir(), 'rayshader_img.png')
#
# rgl::open3d(useNULL = TRUE) # this removes the second rgl-popup-window
#
# fitbitViz::rayshader_3d_DEM(rst_buf = rst_obj,
# rst_ext = sf_rst_ext$raster_obj_extent,
# linestring_ASC_DESC = linestring_dat,
# elevation_sample_points = dat_3m,
# zoom = 0.3,
# windowsize = c(1000, 800),
# add_shadow_rescale_original = FALSE,
# verbose = TRUE)
#
# rgl::rgl.snapshot(snapshot_rayshader_path)
# rgl::par3d(mouseMode = "trackball") # options: c("trackball", "polar", "zoom", "selecting")
# rgl::rglwidget()
#
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.