R/plot.GRiwrm.R
plot.GRiwrm.Rd
Display of a diagram representing the network structure of a GRiwrm object
# S3 method for GRiwrm
plot(
x,
display = TRUE,
orientation = "LR",
width = "100%",
height = "100%",
box_colors = c(UpstreamUngauged = "#eef", UpstreamGauged = "#aaf", IntermediateUngauged
= "#efe", IntermediateGauged = "#afa", DirectInjection = "#faa", Reservoir = "#9de"),
defaultClassDef = "stroke:#333",
...
)
[GRiwrm object] data to display. See CreateGRiwrm for details
logical if TRUE
displays the diagram with DiagrammeR::mermaid, returns the mermaid code otherwise
character orientation of the graph. Possible values are "LR" (left-right), "RL" (right-left), "TB" (top-bottom), or "BT" (bottom-top). "LR" by default
numeric width of the resulting graphic in pixels (See DiagrammeR::mermaid)
numeric height of the resulting graphic in pixels (See DiagrammeR::mermaid)
list containing the color used for the different types of nodes
character default style apply to all boxes
Other arguments and parameters you would like to send to JavaScript (See DiagrammeR::mermaid)
Mermaid code of the diagram if display is FALSE
, otherwise the function returns the diagram itself.
This function only works inside RStudio because the HTMLwidget produced by DiagrammeR is not handled on some platforms
library(airGRiwrm)
#########################################
# Network of 2 nodes distant of 150 km: #
#########################################
# - an upstream reservoir modelled as a direct flow injection (no model)
# - a gauging station downstream a catchment of 360 km² modelled with GR4J
db <- data.frame(id = c("Reservoir", "GaugingDown"),
length = c(150, NA),
down = c("GaugingDown", NA),
area = c(NA, 360),
model = c(NA, "RunModel_GR4J"),
stringsAsFactors = FALSE)
griwrm_basic <- CreateGRiwrm(db)
griwrm_basic
#> id down length model area donor
#> 1 Reservoir GaugingDown 150 <NA> NA <NA>
#> 2 GaugingDown <NA> NA RunModel_GR4J 360 GaugingDown
# Network diagram with direct flow node in red, intermediate sub-basin in green
plot(griwrm_basic)
###################################################
# GR4J semi-distributed model of the Severn River #
###################################################
data(Severn)
nodes <- Severn$BasinsInfo
nodes$model <- "RunModel_GR4J"
str(nodes)
#> 'data.frame': 6 obs. of 13 variables:
#> $ gauge_id : chr "54057" "54032" "54001" "54095" ...
#> $ gauge_name : chr "Severn at Haw Bridge" "Severn at Saxons Lode" "Severn at Bewdley" "Severn at Buildwas" ...
#> $ gauge_lat : num 52 52 52.4 52.6 52.1 ...
#> $ gauge_lon : num -2.23 -2.2 -2.32 -2.53 -1.94 -2.39
#> $ area : num 9885 6865 4330 3723 2208 ...
#> $ elev_mean : int 145 170 175 186 99 212
#> $ station_type : chr "VA" "US" "US" "US" ...
#> $ flow_period_start : chr "1971-07-01" "1970-10-01" "1970-10-01" "1984-03-01" ...
#> $ flow_period_end : chr "2015-09-30" "2015-09-30" "2015-09-30" "2015-09-30" ...
#> $ bankfull_flow : num 460 340 420 285 125 190
#> $ downstream_id : chr NA "54057" "54032" "54001" ...
#> $ distance_downstream: num NA 15 45 42 43 32
#> $ model : chr "RunModel_GR4J" "RunModel_GR4J" "RunModel_GR4J" "RunModel_GR4J" ...
# Mismatch column names are renamed to stick with GRiwrm requirements
rename_columns <- list(id = "gauge_id",
down = "downstream_id",
length = "distance_downstream")
griwrm_severn <- CreateGRiwrm(nodes, rename_columns)
griwrm_severn
#> id down length model area donor
#> 1 54057 <NA> NA RunModel_GR4J 9885.46 54057
#> 2 54032 54057 15 RunModel_GR4J 6864.88 54032
#> 3 54001 54032 45 RunModel_GR4J 4329.90 54001
#> 4 54095 54001 42 RunModel_GR4J 3722.68 54095
#> 5 54002 54057 43 RunModel_GR4J 2207.95 54002
#> 6 54029 54032 32 RunModel_GR4J 1483.65 54029
# Network diagram with upstream basin nodes in blue, intermediate sub-basin in green
plot(griwrm_severn)
####################################################################
# Severn network with an ungauged station at nodes 54029 and 54001 #
####################################################################
# By default the first gauged node at downstream is used for parameter calibration (54032)
nodes_ungauged <- nodes
nodes_ungauged$model[nodes_ungauged$gauge_id %in% c("54029", "54001")] <- "Ungauged"
griwrm_ungauged <- CreateGRiwrm(nodes_ungauged, rename_columns)
# The `donor` column define which node is used for parameter calibration
griwrm_ungauged
#> id down length model area donor
#> 1 54057 <NA> NA RunModel_GR4J 9885.46 54057
#> 2 54032 54057 15 RunModel_GR4J 6864.88 54032
#> 3 54001 54032 45 Ungauged 4329.90 54032
#> 4 54095 54001 42 RunModel_GR4J 3722.68 54095
#> 5 54002 54057 43 RunModel_GR4J 2207.95 54002
#> 6 54029 54032 32 Ungauged 1483.65 54032
# Network diagram with gauged nodes of vivid color, and ungauged nodes of dull color
plot(griwrm_ungauged)
#######################################################
# Severn network with a Diversion on the node "54029" #
# which transfer flows to the node "54001" #
#######################################################
nodes_div <- nodes[, c("gauge_id", "downstream_id", "distance_downstream", "model", "area")]
nodes_div <- rbind(nodes_div, data.frame(gauge_id = "54029",
downstream_id = "54001",
distance_downstream = 20,
model = "Diversion",
area = NA))
griwrm_div <- CreateGRiwrm(nodes_div, rename_columns)
# Network diagram figures Diversion node by a red frame and a red arrow
plot(griwrm_div)