knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) is_pkgdown <- identical(Sys.getenv("IN_PKGDOWN"), "true")
library(simlandr)
Here comes the central purpose of simlandr
: constructing the potential landscapes from simulation results.
The landscape function is calculated based on the steady-state distribution of the system:
$$U = -\ln P_\textrm{SS}$$
My colleagues and I recently wrote some papers about the theoretical background of this method. You can find them at https://doi.org/10.1080/00273171.2022.2119927 or https://osf.io/pzva3.
simlandr
provides a set of tools to construct 2d, 3d, and 4d landscapes from single or multiple simulation results. These methods will be illustrated in the following sections.
Frequently used parameters for the family of landscape functions:
x
,y
,z
,rols
,cols
,fr
: the variable names for plot dimensions;
from
,to
(for 2d landscapes), lims
(for 3d and 4d landscapes): the range of axes;
adjust
(for 2d landscapes), h
(for 3d and 4d landscapes): the level of smoothness;
Umax
: the maximum displayed value of potential.
The landscapes in this section are only from a single simulation. We first make a simulation series for illustration.
single_test <- sim_fun_test( arg1 = list(ele1 = 1), arg2 = list(ele2 = 1, ele3 = 0) )
The result of the landscape functions is a landscape
object, which contains the landscape plot as well as the smooth distributions that are used to calculate the landscapes. Plots without z-axis are built with ggplot2
package, while plots with z-axis are built with plotly
package. These plots can also be modified using ggplot2
or plotly
functions.
You can use plot(l)
to access those plots. For some types of landscape
s, there are multiple types of plots available. Use plot(l, index = 2)
or plot(l, index = 3)
, etc. to access those plots.
Below are the examples of available plots. The meaning of the parameters can be found on the helping page of each function.
l_single_2d <- make_2d_static(single_test, x = "out1") plot(l_single_2d)
l_single_3d <- make_3d_static(single_test, x = "out1", y = "out2")
# This chunk will only run when building with pkgdown plot(l_single_3d, 1)
plot(l_single_3d, 2)
# This chunk will only run when building with pkgdown l_single_4d <- make_4d_static(single_test, x = "out1", y = "out2", z = "out3") plot(l_single_4d) %>% plotly::layout(scene = list(zaxis = list(range = c(-3, 3))))
The landscapes in the section are built from batch simulation results. The following two data sets will be used to illustrate the functions. The difference is that batch_test_result
only contains one varying parameter, whereas batch_test_result2
contains two.
batch_test <- new_arg_set() batch_test <- batch_test %>% add_arg_ele("arg2", "ele3", 0.2, 0.5, 0.1) batch_test_grid <- make_arg_grid(batch_test) batch_test_result <- batch_simulation(batch_test_grid, sim_fun_test, default_list = list( arg1 = list(ele1 = 0), arg2 = list(ele2 = 0, ele3 = 0) ), bigmemory = FALSE ) batch_test_result batch_test2 <- new_arg_set() batch_test2 <- batch_test2 %>% add_arg_ele("arg1", "ele1", 0.2, 0.6, 0.2) %>% add_arg_ele("arg2", "ele2", 0.2, 0.6, 0.2) batch_test_grid2 <- make_arg_grid(batch_test2) batch_test_result2 <- batch_simulation(batch_test_grid2, sim_fun_test, default_list = list( arg1 = list(ele1 = 0), arg2 = list(ele2 = 0, ele3 = 0) ), bigmemory = FALSE ) batch_test_result2
Below are the examples of available plots.
l_batch_2d_m1 <- make_2d_matrix(batch_test_result, x = "out1", cols = "ele3") plot(l_batch_2d_m1) l_batch_2d_m2 <- make_2d_matrix(batch_test_result2, x = "out1", rows = "ele1", cols = "ele2") plot(l_batch_2d_m2)
l_batch_3d_m1 <- make_3d_matrix(batch_test_result, x = "out1", y = "out2", cols = "ele3") plot(l_batch_3d_m1) l_batch_3d_m2 <- make_3d_matrix(batch_test_result2, x = "out1", y = "out2", rows = "ele1", cols = "ele2") plot(l_batch_3d_m2)
This part is computational and storage expensive thus not evaluated in the released vignette. You can run it on your device to see how the function produces animations. gifski
package is needed to show the 3d (x, y, color) animation.
l_batch_3d_a <- make_3d_animation(batch_test_result, x = "out1", y = "out2", fr = "ele3") plot(l_batch_3d_a, 1) plot(l_batch_3d_a, 2)
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.