--- title: "Creating Maps and Plots" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Creating Maps and Plots} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 8, fig.height = 6 ) ``` ```{r setup} library(manureshed) ``` ## Overview The `manureshed` package creates several types of visualizations: 1. **Classification maps** - Show nutrient balance categories 2. **WWTP facility maps** - Show treatment plant locations and sizes 3. **Influence maps** - Show how much WWTP contributes to each area 4. **Comparison plots** - Before/after adding WWTP data 5. **Network plots** - Show transitions between neighboring areas ## Quick Maps with quick_analysis() The easiest way to get maps is with `quick_analysis()`: ```{r quick_maps, eval=FALSE} # This creates all maps automatically results <- quick_analysis( scale = "huc8", year = 2016, nutrients = "nitrogen", include_wwtp = TRUE, output_dir = "my_maps" ) # Maps are saved in the output directory ``` ## Step-by-Step Map Creation ### 1. Get Analysis Results First ```{r get_results, eval=FALSE} # Run analysis to get data for mapping results <- run_builtin_analysis( scale = "county", year = 2016, nutrients = c("nitrogen", "phosphorus"), include_wwtp = TRUE ) ``` ### 2. Agricultural Classification Maps ```{r classification_maps, eval=FALSE} # Basic nitrogen map nitrogen_map <- map_agricultural_classification( data = results$agricultural, nutrient = "nitrogen", classification_col = "N_class", title = "Agricultural Nitrogen Classifications" ) # View the map print(nitrogen_map) # Save the map save_plot(nitrogen_map, "nitrogen_classes.png", width = 10, height = 8) # Phosphorus map phosphorus_map <- map_agricultural_classification( data = results$agricultural, nutrient = "phosphorus", classification_col = "P_class", title = "Agricultural Phosphorus Classifications" ) ``` ### 3. Combined Maps (Agricultural + WWTP) ```{r combined_maps, eval=FALSE} # Map showing effect of adding WWTP data combined_nitrogen <- map_agricultural_classification( data = results$integrated$nitrogen, nutrient = "nitrogen", classification_col = "combined_N_class", title = "Nitrogen with WWTP Integration" ) combined_phosphorus <- map_agricultural_classification( data = results$integrated$phosphorus, nutrient = "phosphorus", classification_col = "combined_P_class", title = "Phosphorus with WWTP Integration" ) ``` ### 4. WWTP Facility Maps ```{r facility_maps, eval=FALSE} # Map showing WWTP locations colored by size facility_map <- map_wwtp_points( wwtp_sf = results$wwtp$nitrogen$spatial_data, nutrient = "nitrogen", title = "Nitrogen WWTP Facilities" ) print(facility_map) ``` ### 5. WWTP Influence Maps ```{r influence_maps, eval=FALSE} # Map showing how much WWTP contributes to each area influence_map <- map_wwtp_influence( data = results$integrated$nitrogen, nutrient = "nitrogen", title = "WWTP Contribution to Total Nitrogen" ) print(influence_map) ``` ## Comparison Plots ### Before/After WWTP Integration ```{r comparison_plots, eval=FALSE} # Create summary data summary_data <- create_classification_summary( data = results$integrated$nitrogen, agricultural_col = "N_class", combined_col = "combined_N_class" ) # Before/after bar chart comparison_plot <- plot_before_after_comparison( data = summary_data, nutrient = "nitrogen", title = "Effect of Adding WWTP Data" ) print(comparison_plot) # Impact ratios impact_plot <- plot_impact_ratios( data = summary_data, title = "WWTP Impact on Classifications" ) # Absolute changes change_plot <- plot_absolute_changes( data = summary_data, title = "Change in Number of Counties" ) ``` ## Network Plots ### Spatial Transition Networks ```{r network_plots, eval=FALSE} # Add coordinates to the data centroids <- add_centroid_coordinates(results$integrated$nitrogen) # Calculate how often different classes are next to each other transitions <- calculate_transition_probabilities( centroids, "combined_N_class" ) # Create network plot create_network_plot( transition_df = transitions, nutrient = "nitrogen", analysis_type = "WWTP + Agricultural", output_path = "nitrogen_network.png" ) # View the transition table print(transitions) ``` ## Customizing Maps ### Save Options ```{r save_options, eval=FALSE} # Different resolutions and formats save_plot(nitrogen_map, "map_web.png", width = 8, height = 6, dpi = 150) # Web save_plot(nitrogen_map, "map_print.png", width = 10, height = 8, dpi = 300) # Print save_plot(nitrogen_map, "map_publication.png", width = 12, height = 9, dpi = 600) # Publication # Vector formats save_plot(nitrogen_map, "map_vector.pdf", width = 10, height = 8) ``` ### Custom Colors ```{r custom_colors, eval=FALSE} # Use different colors custom_map <- map_agricultural_classification( data = results$agricultural, nutrient = "nitrogen", classification_col = "N_class", title = "Custom Colors" ) + ggplot2::scale_fill_manual( values = c("Source" = "red", "Sink_Deficit" = "blue", "Sink_Fertilizer" = "green", "Within_County" = "yellow", "Excluded" = "gray"), labels = c("Source", "Sink Deficit", "Sink Fertilizer", "Within County", "Excluded") ) ``` ## Working with Different Scales ### County Level ```{r county_scale, eval=FALSE} # County analysis county_results <- run_builtin_analysis(scale = "county", year = 2016, nutrients = "nitrogen", include_wwtp = TRUE) county_map <- map_agricultural_classification( county_results$agricultural, "nitrogen", "N_class", "County-Level Nitrogen Classifications" ) ``` ### HUC8 Watersheds ```{r huc8_scale, eval=FALSE} # Watershed analysis huc8_results <- run_builtin_analysis(scale = "huc8", year = 2016, nutrients = "nitrogen", include_wwtp = TRUE) huc8_map <- map_agricultural_classification( huc8_results$agricultural, "nitrogen", "N_class", "Watershed-Level Nitrogen Classifications" ) ``` ### HUC2 Regions ```{r huc2_scale, eval=FALSE} # Regional analysis huc2_results <- run_builtin_analysis(scale = "huc2", year = 2016, nutrients = "nitrogen", include_wwtp = TRUE) huc2_map <- map_agricultural_classification( huc2_results$agricultural, "nitrogen", "N_class", "Regional-Level Nitrogen Classifications" ) ``` ## State-Specific Maps ```{r state_maps, eval=FALSE} # Create maps for a specific state iowa_results <- run_state_analysis( state = "IA", scale = "county", year = 2016, nutrients = "nitrogen", include_wwtp = TRUE ) iowa_map <- map_agricultural_classification( iowa_results$agricultural, "nitrogen", "N_class", "Iowa Nitrogen Classifications" ) # Quick state maps texas_maps <- quick_state_analysis( state = "TX", scale = "huc8", year = 2015, nutrients = "phosphorus", create_maps = TRUE ) ``` ## Multi-Panel Figures ```{r multi_panel, eval=FALSE} # Create side-by-side comparison library(ggplot2) library(gridExtra) # or cowplot # Create two maps map1 <- map_agricultural_classification( results$agricultural, "nitrogen", "N_class", "Agricultural Only" ) map2 <- map_agricultural_classification( results$integrated$nitrogen, "nitrogen", "combined_N_class", "With WWTP" ) # Combine them combined_figure <- grid.arrange(map1, map2, ncol = 2) # Save combined figure ggsave("combined_maps.png", combined_figure, width = 16, height = 8) ``` ## Tips for Good Maps ### Map Quality ```{r map_tips, eval=FALSE} # For presentations (screen) save_plot(map, "presentation.png", width = 12, height = 8, dpi = 150) # For reports (print) save_plot(map, "report.png", width = 10, height = 8, dpi = 300) # For journals (high quality) save_plot(map, "journal.png", width = 8, height = 6, dpi = 600) ``` ### Color Choices - Use the built-in colors for consistency - Consider colorblind-friendly palettes - Make sure colors show up in grayscale - Use high contrast for important categories ### File Management ```{r file_management, eval=FALSE} # Organize your outputs create_maps_folder <- function(analysis_name) { dir.create(analysis_name, showWarnings = FALSE) dir.create(file.path(analysis_name, "maps"), showWarnings = FALSE) dir.create(file.path(analysis_name, "plots"), showWarnings = FALSE) dir.create(file.path(analysis_name, "data"), showWarnings = FALSE) } create_maps_folder("nitrogen_analysis_2016") ``` ## Troubleshooting ### Common Issues ```{r troubleshooting, eval=FALSE} # If maps are blank, check your data quick_check(results) # If colors are wrong, check classification column names table(results$agricultural$N_class) # If coordinates are missing centroids <- add_centroid_coordinates(results$agricultural) # If maps are too slow, try smaller scale or fewer years ``` This covers the essential mapping and visualization functions in `manureshed`. The package makes it easy to create publication-quality maps and plots for nutrient flow analysis.