Simple function to plot a vector field given two components.
Arguments
- data
A dataframe containing data to be plotted in the form of: (x, y, u, v).
- scale
length factor of vector components
- everyx
keep one out of every everyx values, along x direction.
- everyy
keep one out of every everyy values, along y direction.
- size
arrow size.
- preview
(default = TRUE) create a plot. If FALSE it only creates the ggplot2 directive to be added to another plot.
Value
A ggplot2
object if preview = TRUE
. A ggplot2
a plot, as a contourPlot2()
and the vector field will be overlapped.
Details
This function plots a vector field given a data.frame with coordinates (x, y) and corresponding velocity components (u, v). Vectors are coloured by magnitude (speed). The coordinates are assumed to be on a regular rectangular grid in the UTM reference system.
This function is heavily inspired by snippets of code in R Graphics Cookbook by Winston Chang (https://r-graphics.org/index.html).
Examples
if (FALSE) {
metU <- importADSOBIN('/path/to/meteofile',
variable = 'U',
slice=2,
k = 1000,
verbose = TRUE)
metU <- as.data.frame(metU)
metU <- metU %>%
mutate(u = z, z = NULL)
metV <- importADSOBIN('/path/to/meteofile',
variable = 'V',
slice=2,
k = 1000,
verbose = TRUE)
metV <- as.data.frame(metV)
metV <- metV %>%
mutate(v = z, z = NULL)
met <- merge(metU, metV, by = c("x", "y"))
vectorField(met, everyx = 2, everyy = 2, scale = 10) +
coord_fixed(ratio = 1, xlim = c(0, 1000), ylim = c(0, 1000)) +
scale_color_viridis_c()
# Overlap the vector field to a contour plot and set vector colours to black
met$ws <- sqrt(met$u^2 + met$v^2)
contourPlot2(met, z = "ws") +
vectorField(met, everyx = 2, everyy = 2, scale = 10, preview = FALSE) +
scale_colour_gradient(low = "black", high = "black", guide = NULL)
}