R/ppp_plot_spp_solution.R
ppp_plot_spp_solution.Rd
Create a plot to visualize a solution to the 'Project Prioritization Protocol' problem (Joseph, Maloney & Possingham 2009) with species weights. This plot is essentially a phylogram with the length of each branch corresponding to the species' weight.
ppp_plot_spp_solution(x, y, spp, solution, project_column_name, success_column_name, action_column_name, cost_column_name, species_column_name, weight_column_name = NULL, n = 1L, symbol_hjust = 0.007)
x |
|
---|---|
y |
|
spp |
|
solution |
|
project_column_name |
|
success_column_name |
|
action_column_name |
|
cost_column_name |
|
species_column_name |
|
weight_column_name |
|
n |
|
symbol_hjust |
|
This function requires the ggtree (Yu et al. 2017).
Since this package is distributed exclusively
through Bioconductor, and is not
available on the
Comprehensive R Archive Network,
please execute the following command to install it:
source("https://bioconductor.org/biocLite.R");biocLite("ggtree")
.
If the installation process fails, please consult the package's online documentation.
Here, each line is colored according to probability that it is expected to persist into the future (based on Faith 2008). Additionally, species that directly benefit from at least a single completely funded project with a non-zero cost are denoted with an asterisk symbol. Species that indirectly benefit from funded projects---because they are associated with partially funded projects that have non-zero costs and share actions with at least one funded project---are denoted with an open circle symbols.
Joseph LN, Maloney RF & Possingham HP (2009) Optimal allocation of resources among threatened species: A project prioritization protocol. Conservation Biology, 23, 328--338.
Yu G, Smith DK, Zhu H, Guan Y, & Lam TTY (2017) ggtree: an R package for visualization and annotation of phylogenetic trees with their covariates and other associated data. Methods in Ecology and Evolution, 8: 28--36.
To generate solutions for the 'Project
Prioritization Protocol' problem, see
ppp_heuristic_spp_solution
ppp_exact_spp_solution
,
ppp_manual_spp_solution
,
or ppp_random_spp_solution
.
# set seed for reproducibility set.seed(500) # load the ggplot2 R package to customize plots library(ggplot2) # load built-in data data(sim_project_data, sim_action_data, sim_species_data) # print simulated project data print(sim_project_data)#> # A tibble: 6 x 13 #> name success S1 S2 S3 S4 S5 S1_action S2_action S3_action #> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <lgl> <lgl> <lgl> #> 1 S1_p~ 0.919 0.791 0 0 0 0 TRUE FALSE FALSE #> 2 S2_p~ 0.923 0 0.888 0 0 0 FALSE TRUE FALSE #> 3 S3_p~ 0.829 0 0 0.502 0 0 FALSE FALSE TRUE #> 4 S4_p~ 0.848 0 0 0 0.690 0 FALSE FALSE FALSE #> 5 S5_p~ 0.814 0 0 0 0 0.617 FALSE FALSE FALSE #> 6 base~ 1 0.298 0.250 0.0865 0.249 0.182 FALSE FALSE FALSE #> # ... with 3 more variables: S4_action <lgl>, S5_action <lgl>, #> # baseline_action <lgl>#> # A tibble: 6 x 4 #> name cost locked_in locked_out #> <chr> <dbl> <lgl> <lgl> #> 1 S1_action 94.4 FALSE FALSE #> 2 S2_action 101. FALSE FALSE #> 3 S3_action 103. TRUE FALSE #> 4 S4_action 99.2 FALSE FALSE #> 5 S5_action 99.9 FALSE TRUE #> 6 baseline_action 0 FALSE FALSE#> # A tibble: 5 x 2 #> name weight #> <chr> <dbl> #> 1 S3 0.211 #> 2 S1 0.211 #> 3 S5 0.221 #> 4 S2 0.630 #> 5 S4 1.59# create random some solutions with a budget of 300 s1 <- ppp_random_spp_solution(sim_project_data, sim_action_data, sim_species_data, 300, "name", "success", "name", "cost", "name", "weight", number_solutions = 10) # print output print(s1)#> # A tibble: 10 x 12 #> solution method obj budget cost optimal S1_action S2_action S3_action #> <int> <chr> <dbl> <dbl> <dbl> <lgl> <lgl> <lgl> <lgl> #> 1 1 random 1.66 300 295. NA TRUE TRUE FALSE #> 2 2 random 1.37 300 297. NA TRUE FALSE TRUE #> 3 3 random 1.57 300 200. NA FALSE TRUE FALSE #> 4 4 random 1.19 300 299. NA TRUE TRUE TRUE #> 5 5 random 0.906 300 298. NA TRUE FALSE TRUE #> 6 6 random 1.19 300 299. NA TRUE TRUE TRUE #> 7 7 random 0.816 300 203. NA FALSE FALSE TRUE #> 8 8 random 1.20 300 295. NA TRUE TRUE FALSE #> 9 9 random 0.906 300 298. NA TRUE FALSE TRUE #> 10 10 random 1.28 300 202. NA FALSE FALSE TRUE #> # ... with 3 more variables: S4_action <lgl>, S5_action <lgl>, #> # baseline_action <lgl># plot the first solution ppp_plot_spp_solution(sim_project_data, sim_action_data, sim_species_data, s1, "name", "success", "name", "cost", "name", "weight")# plot the second solution ppp_plot_spp_solution(sim_project_data, sim_action_data, sim_species_data, s1, "name", "success", "name", "cost", "name", "weight", n = 2)# since this function returns a ggplot2 plot object, we can customize the # appearance of the plot using standard ggplot2 commands! # for example, we can add a title ppp_plot_spp_solution(sim_project_data, sim_action_data, sim_species_data, s1, "name", "success", "name", "cost", "name", "weight") + ggtitle("solution")# we could also also set the minimum and maximum values in the color ramp to # correspond to those in the data, rather than being capped at 0 and 1 ppp_plot_spp_solution(sim_project_data, sim_action_data, sim_species_data, s1, "name", "success", "name", "cost", "name", "weight") + scale_color_gradientn(name = "Probability of\npersistence", colors = viridisLite::inferno(150, begin = 0, end = 0.9, direction = -1)) + ggtitle("solution")#>#># we could also change the color ramp ppp_plot_spp_solution(sim_project_data, sim_action_data, sim_species_data, s1, "name", "success", "name", "cost", "name", "weight") + scale_color_gradient(name = "Probability of\npersistence", low = "red", high = "black") + ggtitle("solution")#>#># we could even hide the legend if desired ppp_plot_spp_solution(sim_project_data, sim_action_data, sim_species_data, s1, "name", "success", "name", "cost", "name", "weight") + scale_color_gradient(name = "Probability of\npersistence", low = "red", high = "black") + theme(legend.position = "hide") + ggtitle("solution")#>#>