Title: | Climate AEMET Tools |
---|---|
Description: | Tools to download the climatic data of the Spanish Meteorological Agency (AEMET) directly from R using their API and create scientific graphs (climate charts, trend analysis of climate time series, temperature and precipitation anomalies maps, warming stripes graphics, climatograms, etc.). |
Authors: | Manuel Pizarro [aut, cph] |
Maintainer: | Diego Hernangómez <[email protected]> |
License: | GPL-3 |
Version: | 1.2.0 |
Built: | 2023-09-12 20:09:49 UTC |
Source: | https://github.com/rOpenSpain/climaemet |
This function will store your AEMET API key on your local machine so it can
be called securely without being stored in your code. After you have
installed your key, it can be called any time by typing
Sys.getenv("AEMET_API_KEY")
and can be
used in package functions by simply typing AEMET_API_KEY
.
Alternatively, you can install the API Key manually:
Run Sys.setenv(AEMET_API_KEY = "Your_Key")
. You would need to run this
command on each session (Similar to install = FALSE
).
Write this line on your .Renviron file: AEMET_API_KEY = "Your_Key"
(
same behavior than install = TRUE
). This would store your API key
permanently.
aemet_api_key(apikey, overwrite = FALSE, install = FALSE)
apikey |
The API key provided to you from the AEMET formatted in quotes. A key can be acquired at https://opendata.aemet.es/centrodedescargas/inicio. |
overwrite |
If this is set to |
install |
if |
None
To locate your API Key on your local machine, run
rappdirs::user_cache_dir("climaemet", "R")
.
Other aemet_auth:
aemet_detect_api_key()
# Don't run these examples!
if (FALSE) {
aemet_api_key("111111abc", install = TRUE)
# You can check it with:
Sys.getenv("AEMET_API_KEY")
}
if (FALSE) {
# If you need to overwrite an existing key:
aemet_api_key("222222abc", overwrite = TRUE, install = TRUE)
# You can check it with:
Sys.getenv("AEMET_API_KEY")
}
Get climatology values for a station or for all the available stations.
Note that aemet_daily_period()
and aemet_daily_period_all()
are shortcuts
of aemet_daily_clim()
.
aemet_daily_clim(
station = "all",
start = Sys.Date() - 7,
end = Sys.Date(),
verbose = FALSE,
return_sf = FALSE,
extract_metadata = FALSE
)
aemet_daily_period(
station,
start = as.integer(format(Sys.Date(), "%Y")),
end = start,
verbose = FALSE,
return_sf = FALSE,
extract_metadata = FALSE
)
aemet_daily_period_all(
start = as.integer(format(Sys.Date(), "%Y")),
end = start,
verbose = FALSE,
return_sf = FALSE,
extract_metadata = FALSE
)
station |
Character string with station identifier code(s)
(see |
start , end
|
Character string with start and end date. See Details. |
verbose |
Logical |
return_sf |
Logical |
extract_metadata |
Logical |
start
and end
parameters should be:
For aemet_daily_clim()
: A Date
object or a string with format:
YYYY-MM-DD (2020-12-31) coercible with as.Date()
.
For aemet_daily_period()
and aemet_daily_period_all()
: A string
representing the year(s) to be extracted: "2020", "2018".
You need to set your API Key globally using aemet_api_key()
.
Other aemet_api_data:
aemet_extremes_clim()
,
aemet_forecast_daily()
,
aemet_last_obs()
,
aemet_monthly
,
aemet_normal
,
aemet_stations()
library(tibble)
obs <- aemet_daily_clim(c("9434", "3195"))
glimpse(obs)
# Metadata
meta <- aemet_daily_clim(c("9434", "3195"), extract_metadata = TRUE)
glimpse(meta$campos)
The function would detect if an API Key is available on this session:
If an API Key is already set as an environment variable it would be preserved
If no environment variable has been set and you have stored permanently
an API Key using aemet_api_key()
, the latter would be loaded.
aemet_detect_api_key(...)
... |
Ignored |
TRUE
or FALSE
Other aemet_auth:
aemet_api_key()
aemet_detect_api_key()
Get recorded extreme values for a station.
aemet_extremes_clim(
station = NULL,
parameter = "T",
verbose = FALSE,
return_sf = FALSE,
extract_metadata = FALSE
)
station |
Character string with station identifier code(s)
(see |
parameter |
Character string as temperature ("T"), precipitation ("P") or wind ("V") parameter. |
verbose |
Logical |
return_sf |
Logical |
extract_metadata |
Logical |
You need to set your API Key globally using aemet_api_key()
.
Other aemet_api_data:
aemet_daily_clim()
,
aemet_forecast_daily()
,
aemet_last_obs()
,
aemet_monthly
,
aemet_normal
,
aemet_stations()
library(tibble)
obs <- aemet_extremes_clim(c("9434", "3195"))
glimpse(obs)
Get a database of daily or hourly weather forecasts for a given municipality.
aemet_forecast_daily(x, verbose = FALSE, extract_metadata = FALSE)
aemet_forecast_hourly(x, verbose = FALSE, extract_metadata = FALSE)
x |
A vector of municipality codes to extract. For convenience,
climaemet provides this data on the dataset aemet_munic
(see |
verbose |
Logical |
extract_metadata |
Logical |
Forecasts format provided by the AEMET API have a complex structure.
Although climaemet returns a tibble
, each forecasted value is
provided as a nested tibble
. aemet_forecast_tidy()
helper function can
unnest these values an provide a single unnested tibble
for the requested
variable.
If extract_metadata = TRUE
a simple tibble
describing the value of
each field of the forecast is returned.
A nested tibble. Forecasted values can be extracted with
aemet_forecast_tidy()
. See also Details
You need to set your API Key globally using aemet_api_key()
.
aemet_munic for municipality codes.
Other aemet_api_data:
aemet_daily_clim()
,
aemet_extremes_clim()
,
aemet_last_obs()
,
aemet_monthly
,
aemet_normal
,
aemet_stations()
Other forecasts:
aemet_forecast_tidy()
# Select a city
data("aemet_munic")
library(dplyr)
munis <- aemet_munic %>%
filter(municipio_nombre %in% c(
"Santiago de Compostela",
"Lugo"
)) %>%
pull(municipio)
daily <- aemet_forecast_daily(munis)
# Metadata
meta <- aemet_forecast_daily(munis, extract_metadata = TRUE)
glimpse(meta$campos)
# Vars available
aemet_forecast_vars_available(daily)
# This is nested
daily %>%
select(municipio, fecha, nombre, temperatura)
# Select and unnest
daily_temp <- aemet_forecast_tidy(daily, "temperatura")
# This is not
daily_temp
# Wrangle and plot
daily_temp_end <- daily_temp %>%
select(
elaborado, fecha, municipio, nombre, temperatura_minima,
temperatura_maxima
) %>%
tidyr::pivot_longer(cols = contains("temperatura"))
# Plot
library(ggplot2)
ggplot(daily_temp_end) +
geom_line(aes(fecha, value, color = name)) +
facet_wrap(~nombre, ncol = 1) +
scale_color_manual(
values = c("red", "blue"),
labels = c("max", "min")
) +
scale_x_date(
labels = scales::label_date_short(),
breaks = "day"
) +
scale_y_continuous(
labels = scales::label_comma(suffix = "º")
) +
theme_minimal() +
labs(
x = "", y = "",
color = "",
title = "Forecast: 7-day temperature",
subtitle = paste(
"Forecast produced on",
format(daily_temp_end$elaborado[1], usetz = TRUE)
)
)
Helpers for aemet_forecast_daily()
and aemet_forecast_hourly()
:
aemet_forecast_vars_available()
extracts the values available on
the dataset.
aemet_forecast_tidy()
produces a tidy tibble
with the forecast
for var
.
aemet_forecast_tidy(x, var)
aemet_forecast_vars_available(x)
x |
A database extracted with |
var |
Name of the desired var to extract |
A vector of characters (aemet_forecast_vars_available()
)
or a tibble (aemet_forecast_tidy()
).
Other forecasts:
aemet_forecast_daily()
# Hourly values
hourly <- aemet_forecast_hourly(c("15030", "28080"))
# Vars available
aemet_forecast_vars_available(hourly)
# Get temperature
temp <- aemet_forecast_tidy(hourly, "temperatura")
library(dplyr)
# Make hour - Need lubridate to adjust timezones
temp_end <- temp %>%
mutate(
forecast_time = lubridate::force_tz(
as.POSIXct(fecha) + hora,
tz = "Europe/Madrid"
)
)
# Add also sunset and sunrise
suns <- temp_end %>%
select(nombre, fecha, orto, ocaso) %>%
distinct_all() %>%
group_by(nombre) %>%
mutate(
ocaso_end = lubridate::force_tz(
as.POSIXct(fecha) + ocaso,
tz = "Europe/Madrid"
),
orto_end = lubridate::force_tz(
as.POSIXct(fecha) + orto,
tz = "Europe/Madrid"
),
orto_lead = lead(orto_end)
) %>%
tidyr::drop_na()
# Plot
library(ggplot2)
ggplot(temp_end) +
geom_rect(data = suns, aes(
xmin = ocaso_end, xmax = orto_lead,
ymin = min(temp_end$temperatura),
ymax = max(temp_end$temperatura)
), alpha = .4) +
geom_line(aes(forecast_time, temperatura), color = "blue4") +
facet_wrap(~nombre, nrow = 2) +
scale_x_datetime(labels = scales::label_date_short()) +
scale_y_continuous(labels = scales::label_number(suffix = "º")) +
labs(
x = "", y = "",
title = "Forecast: Temperature",
subtitle = paste("Forecast produced on", format(temp_end$elaborado[1],
usetz = TRUE
))
)
Get last observation values for a station.
aemet_last_obs(
station = "all",
verbose = FALSE,
return_sf = FALSE,
extract_metadata = FALSE
)
station |
Character string with station identifier code(s)
(see |
verbose |
Logical |
return_sf |
Logical |
extract_metadata |
Logical |
You need to set your API Key globally using aemet_api_key()
.
Other aemet_api_data:
aemet_daily_clim()
,
aemet_extremes_clim()
,
aemet_forecast_daily()
,
aemet_monthly
,
aemet_normal
,
aemet_stations()
library(tibble)
obs <- aemet_last_obs(c("9434", "3195"))
glimpse(obs)
Get monthly/annual climatology values for a station or all the stations.
aemet_monthly_period()
and aemet_monthly_period_all()
allows requests
that span several years.
aemet_monthly_clim(
station = NULL,
year = as.integer(format(Sys.Date(), "%Y")),
verbose = FALSE,
return_sf = FALSE,
extract_metadata = FALSE
)
aemet_monthly_period(
station = NULL,
start = as.integer(format(Sys.Date(), "%Y")),
end = start,
verbose = FALSE,
return_sf = FALSE,
extract_metadata = FALSE
)
aemet_monthly_period_all(
start = as.integer(format(Sys.Date(), "%Y")),
end = start,
verbose = FALSE,
return_sf = FALSE,
extract_metadata = FALSE
)
station |
Character string with station identifier code(s)
(see |
year |
Numeric value as date (format: YYYY). |
verbose |
Logical |
return_sf |
Logical |
extract_metadata |
Logical |
start |
Numeric value as start year (format: YYYY). |
end |
Numeric value as end year (format: YYYY). |
You need to set your API Key globally using aemet_api_key()
.
Other aemet_api_data:
aemet_daily_clim()
,
aemet_extremes_clim()
,
aemet_forecast_daily()
,
aemet_last_obs()
,
aemet_normal
,
aemet_stations()
library(tibble)
obs <- aemet_monthly_clim(station = c("9434", "3195"), year = 2000)
glimpse(obs)
A tibble
with all the municipalities of Spain as defined by
the INE (Instituto Nacional de Estadistica) as of
January 2020.
A tibble
with
8,131 rows and fields:
INE code of the municipality.
INE name of the municipality.
INE code of the province.
INE name of the province.
INE code of the autonomous community.
INE code of the autonomous community.
INE, Municipality codes by province
aemet_forecast_daily()
,
aemet_forecast_hourly()
Other dataset:
climaemet_9434_climatogram
,
climaemet_9434_temp
,
climaemet_9434_wind
data(aemet_munic)
aemet_munic
Get normal climatology values for a station (or all the stations with
aemet_normal_clim_all()
. Standard climatology from 1981 to 2010.
aemet_normal_clim(
station = NULL,
verbose = FALSE,
return_sf = FALSE,
extract_metadata = FALSE
)
aemet_normal_clim_all(
verbose = FALSE,
return_sf = FALSE,
extract_metadata = FALSE
)
station |
Character string with station identifier code(s)
(see |
verbose |
Logical |
return_sf |
Logical |
extract_metadata |
Logical |
You need to set your API Key globally using aemet_api_key()
.
Code modified from project https://github.com/SevillaR/aemet
Other aemet_api_data:
aemet_daily_clim()
,
aemet_extremes_clim()
,
aemet_forecast_daily()
,
aemet_last_obs()
,
aemet_monthly
,
aemet_stations()
library(tibble)
obs <- aemet_normal_clim(c("9434", "3195"))
glimpse(obs)
Get AEMET stations.
aemet_stations(verbose = FALSE, return_sf = FALSE)
verbose |
Logical |
return_sf |
Logical |
The first result of the API call on each session is (temporarily) cached in
the assigned tempdir()
for avoiding unneeded API calls.
You need to set your API Key globally using aemet_api_key()
.
Code modified from project https://github.com/SevillaR/aemet
Other aemet_api_data:
aemet_daily_clim()
,
aemet_extremes_clim()
,
aemet_forecast_daily()
,
aemet_last_obs()
,
aemet_monthly
,
aemet_normal
library(tibble)
stations <- aemet_stations()
stations
# Cached during this R session
stations2 <- aemet_stations(verbose = TRUE)
identical(stations, stations2)
Normal data for Zaragoza Airport (1981-2010). This is an example dataset used to plot climatograms.
A data.frame with columns 1 to 12 (months) and rows:
Precipitation (mm).
Maximum temperature (Celsius).
Minimum temperature (Celsius).
Absolute monthly minimum temperature (Celsius).
AEMET.
ggclimat_walter_lieth()
, climatogram_period()
,
climatogram_normal()
Other dataset:
aemet_munic
,
climaemet_9434_temp
,
climaemet_9434_wind
Other climatogram:
climatogram_normal()
,
climatogram_period()
,
ggclimat_walter_lieth()
data(climaemet_9434_climatogram)
Yearly observations of average temperature for Zaragoza Airport (1950-2020). This is an example dataset.
A tibble with columns:
Year of reference.
Identifier of the station.
Average temperature (Celsius).
AEMET.
Other dataset:
aemet_munic
,
climaemet_9434_climatogram
,
climaemet_9434_wind
Other stripes:
climatestripes_station()
,
ggstripes()
data(climaemet_9434_temp)
Daily observations of wind speed and directions for Zaragoza Airport (2000-2020). This is an example dataset.
A tibble with columns:
Date of observation.
Wind directions (0-360).
Average wind speed (km/h)
AEMET.
Other dataset:
aemet_munic
,
climaemet_9434_climatogram
,
climaemet_9434_temp
Other wind:
ggwindrose()
,
windrose_days()
,
windrose_period()
data(climaemet_9434_wind)
Show the NEWS file of the climaemet package.
climaemet_news()
(See description)
Open NEWS from climaemet
.
Other helpers:
dms2decdegrees()
,
first_day_of_year()
## Not run:
climaemet_news()
## End(Not run)
Plot climate stripes graph for a station
climatestripes_station(
station,
start = 1950,
end = 2020,
with_labels = "yes",
verbose = FALSE,
...
)
station |
Character string with station identifier code(s)
(see |
start |
Numeric value as start year (format: YYYY). |
end |
Numeric value as end year (format: YYYY). |
with_labels |
Character string as yes/no. Indicates whether to use labels for the graph or not. |
verbose |
Logical |
... |
Arguments passed on to
|
A ggplot2 object
You need to set your API Key globally using aemet_api_key()
.
Other aemet_plots:
climatogram_normal()
,
climatogram_period()
,
ggclimat_walter_lieth()
,
ggstripes()
,
ggwindrose()
,
windrose_days()
,
windrose_period()
Other stripes:
climaemet_9434_temp
,
ggstripes()
climatestripes_station(
"9434",
start = 2010,
end = 2020,
with_labels = "yes",
col_pal = "Inferno"
)
Plot of a Walter & Lieth climatic diagram from normal climatology data for a station. This climatogram are great for showing a summary of climate conditions for a place over a time period (1981-2010).
climatogram_normal(
station,
labels = "en",
verbose = FALSE,
ggplot2 = TRUE,
...
)
station |
Character string with station identifier code(s)
(see |
labels |
Character string as month labels for the X axis: "en" (english), "es" (spanish), "fr" (french), etc. |
verbose |
Logical |
ggplot2 |
|
... |
Further arguments to
|
A plot.
You need to set your API Key globally using aemet_api_key()
.
The code is based on code from the CRAN package climatol
Walter, H. K., Harnickell, E., Lieth, F. H. H., & Rehder, H. (1967). Klimadiagramm-weltatlas. Jena: Fischer, 1967.
Guijarro J. A. (2023). climatol: Climate Tools (Series Homogenization and Derived Products). R package version 4.0.0, https://climatol.eu.
Other aemet_plots:
climatestripes_station()
,
climatogram_period()
,
ggclimat_walter_lieth()
,
ggstripes()
,
ggwindrose()
,
windrose_days()
,
windrose_period()
Other climatogram:
climaemet_9434_climatogram
,
climatogram_period()
,
ggclimat_walter_lieth()
climatogram_normal("9434")
Plot of a Walter & Lieth climatic diagram from monthly climatology data for a station. This climatogram are great for showing a summary of climate conditions for a place over a specific time period.
climatogram_period(
station = NULL,
start = 1990,
end = 2020,
labels = "en",
verbose = FALSE,
ggplot2 = TRUE,
...
)
station |
Character string with station identifier code(s)
(see |
start |
Numeric value as start year (format: YYYY). |
end |
Numeric value as end year (format: YYYY). |
labels |
Character string as month labels for the X axis: "en" (english), "es" (spanish), "fr" (french), etc. |
verbose |
Logical |
ggplot2 |
|
... |
Further arguments to
|
A plot.
You need to set your API Key globally using aemet_api_key()
.
The code is based on code from the CRAN package climatol
Walter, H. K., Harnickell, E., Lieth, F. H. H., & Rehder, H. (1967). Klimadiagramm-weltatlas. Jena: Fischer, 1967.
Guijarro J. A. (2023). climatol: Climate Tools (Series Homogenization and Derived Products). R package version 4.0.0, https://climatol.eu.
Other aemet_plots:
climatestripes_station()
,
climatogram_normal()
,
ggclimat_walter_lieth()
,
ggstripes()
,
ggwindrose()
,
windrose_days()
,
windrose_period()
Other climatogram:
climaemet_9434_climatogram
,
climatogram_normal()
,
ggclimat_walter_lieth()
climatogram_period("9434", start = 2015, end = 2020, labels = "en")
Converts degrees, minutes and seconds to decimal degrees.
dms2decdegrees(input = NULL)
input |
Character string as DMS coordinates. |
A numeric value.
Code modified from project https://github.com/SevillaR/aemet
Other helpers:
climaemet_news()
,
first_day_of_year()
dms2decdegrees("055245W")
Get first and last day of year.
first_day_of_year(year = NULL)
last_day_of_year(year = NULL)
year |
Numeric value as year (format: YYYY). |
Character string as date (format: YYYY-MM-DD).
Other helpers:
climaemet_news()
,
dms2decdegrees()
first_day_of_year(2000)
last_day_of_year(2020)
Client tool to get data and metadata from AEMET and convert json to tibble.
get_data_aemet(apidest, verbose = FALSE)
get_metadata_aemet(apidest, verbose = FALSE)
apidest |
Character string as destination URL. See https://opendata.aemet.es/dist/index.html. |
verbose |
Logical |
A tibble (if possible) or the results of the query as provided by
httr::content()
.
https://opendata.aemet.es/dist/index.html
Some examples on how to use these functions on
vignette("extending-climaemet")
.
# Run this example only if AEMET_API_KEY is detected
url <- "/api/valores/climatologicos/inventarioestaciones/todasestaciones"
get_data_aemet(url)
# Metadata
get_metadata_aemet(url)
# We can get data from any API endpoint
# Plain text
plain <- get_data_aemet("/api/prediccion/nacional/hoy")
cat(plain)
# An image
image <- get_data_aemet("/api/mapasygraficos/analisis")
# Write and read
tmp <- tempfile(fileext = ".gif")
writeBin(image, tmp)
gganimate::gif_file(tmp)
ggplot2
Plot of a Walter and Lieth climatic diagram of a station. This function is
an updated version of climatol::diagwl()
, by Jose A. Guijarro.
ggclimat_walter_lieth(
dat,
est = "",
alt = NA,
per = NA,
mlab = "es",
pcol = "#002F70",
tcol = "#ff0000",
pfcol = "#9BAEE2",
sfcol = "#3C6FC4",
shem = FALSE,
p3line = FALSE,
...
)
dat |
Monthly climatic data for which the diagram will be plotted. |
est |
Name of the climatological station |
alt |
Altitude of the climatological station |
per |
Period on which the averages have been computed |
mlab |
Month labels for the X axis. Use 2-digit language code ("en",
"es", etc.). See |
pcol |
Color pen for precipitation. |
tcol |
Color pen for temperature. |
pfcol |
Fill color for probable frosts. |
sfcol |
Fill color for sure frosts. |
shem |
Set to |
p3line |
Set to |
... |
Other graphic parameters |
See Details on climatol::diagwl()
.
Climatic data must be passed as a 4x12 matrix or data.frame
of monthly
(January to December) data, in the following order:
Row 1: Mean precipitation.
Row 2: Mean maximum daily temperature.
Row 3: Mean minimum daily temperature.
Row 4: Absolute monthly minimum temperature.
See climaemet_9434_climatogram for a sample dataset.
A ggplot2 object. See help("ggplot2")
.
You need to set your API Key globally using aemet_api_key()
.
Walter, H. K., Harnickell, E., Lieth, F. H. H., & Rehder, H. (1967). Klimadiagramm-weltatlas. Jena: Fischer, 1967.
climatol::diagwl()
, readr::locale()
Other aemet_plots:
climatestripes_station()
,
climatogram_normal()
,
climatogram_period()
,
ggstripes()
,
ggwindrose()
,
windrose_days()
,
windrose_period()
Other climatogram:
climaemet_9434_climatogram
,
climatogram_normal()
,
climatogram_period()
library(ggplot2)
wl <- ggclimat_walter_lieth(
climaemet::climaemet_9434_climatogram,
alt = "249",
per = "1981-2010",
est = "Zaragoza Airport"
)
wl
# As it is a ggplot object we can modify it
wl + theme(
plot.background = element_rect(fill = "grey80"),
panel.background = element_rect(fill = "grey70"),
axis.text.y.left = element_text(
colour = "black",
face = "italic"
),
axis.text.y.right = element_text(
colour = "black",
face = "bold"
)
)
Plot different "climate stripes" or "warming stripes" using ggplot2. This graphics are visual representations of the change in temperature as measured in each location over the past 70-100+ years. Each stripe represents the temperature in that station averaged over a year.
ggstripes(
data,
plot_type = "stripes",
plot_title = "",
n_temp = 11,
col_pal = "RdBu",
...
)
data |
a data.frame with date(year) and temperature(temp) variables. |
plot_type |
plot type (with labels, background, stripes with line trend and animation). Accepted values are "background", "stripes", "trend" or "animation". |
plot_title |
character string to be used for the graph title. |
n_temp |
Numeric value as the number of colors of the palette. (default 11). |
col_pal |
Character string indicating the name of the
|
... |
further arguments passed to |
A ggplot2 object
You need to set your API Key globally using aemet_api_key()
.
"Warming stripes" charts are a conceptual idea of Professor Ed Hawkins (University of Reading) and are specifically designed to be as simple as possible and alert about risks of climate change. For more details see ShowYourStripes.
climatestripes_station()
, ggplot2::theme()
for more possible
arguments to pass to ggstripes
.
Other aemet_plots:
climatestripes_station()
,
climatogram_normal()
,
climatogram_period()
,
ggclimat_walter_lieth()
,
ggwindrose()
,
windrose_days()
,
windrose_period()
Other stripes:
climaemet_9434_temp
,
climatestripes_station()
library(ggplot2)
data <- climaemet::climaemet_9434_temp
ggstripes(data, plot_title = "Zaragoza Airport") +
labs(subtitle = "(1950-2020)")
ggstripes(data, plot_title = "Zaragoza Airport", plot_type = "trend") +
labs(subtitle = "(1950-2020)")
Plot a windrose showing the wind speed and direction using ggplot2.
ggwindrose(
speed,
direction,
n_directions = 8,
n_speeds = 5,
speed_cuts = NA,
col_pal = "GnBu",
legend_title = "Wind speed (m/s)",
calm_wind = 0,
n_col = 1,
facet = NULL,
plot_title = "",
...
)
speed |
Numeric vector of wind speeds. |
direction |
Numeric vector of wind directions. |
n_directions |
Numeric value as the number of direction bins to plot (petals on the rose). The number of directions defaults to 8. |
n_speeds |
Numeric value as the number of equally spaced wind speed
bins to plot. This is used if |
speed_cuts |
Numeric vector containing the cut points for the wind
speed intervals, or |
col_pal |
Character string indicating the name of the
|
legend_title |
Character string to be used for the legend title. |
calm_wind |
Numeric value as the upper limit for wind speed that is considered calm (default 0). |
n_col |
The number of columns of plots (default 1). |
facet |
Character or factor vector of the facets used to plot the various windroses. |
plot_title |
Character string to be used for the plot title. |
... |
further arguments (ignored). |
A ggplot2 object
You need to set your API Key globally using aemet_api_key()
.
ggplot2::theme()
for more possible arguments to pass to
ggwindrose
.
Other aemet_plots:
climatestripes_station()
,
climatogram_normal()
,
climatogram_period()
,
ggclimat_walter_lieth()
,
ggstripes()
,
windrose_days()
,
windrose_period()
Other wind:
climaemet_9434_wind
,
windrose_days()
,
windrose_period()
library(ggplot2)
speed <- climaemet::climaemet_9434_wind$velmedia
direction <- climaemet::climaemet_9434_wind$dir
rose <- ggwindrose(
speed = speed,
direction = direction,
speed_cuts = seq(0, 16, 4),
legend_title = "Wind speed (m/s)",
calm_wind = 0,
n_col = 1,
plot_title = "Zaragoza Airport"
)
rose + labs(
subtitle = "2000-2020",
caption = "Source: AEMET"
)
Plot a windrose showing the wind speed and direction for a station over a days period.
windrose_days(
station,
start = "2000-12-01",
end = "2000-12-31",
n_directions = 8,
n_speeds = 5,
speed_cuts = NA,
col_pal = "GnBu",
calm_wind = 0,
legend_title = "Wind Speed (m/s)",
verbose = FALSE
)
station |
Character string with station identifier code(s)
(see |
start |
Character string as start date (format: YYYY-MM-DD). |
end |
Character string as end date (format: YYYY-MM-DD). |
n_directions |
Numeric value as the number of direction bins to plot (petals on the rose). The number of directions defaults to 8. |
n_speeds |
Numeric value as the number of equally spaced wind speed
bins to plot. This is used if |
speed_cuts |
Numeric vector containing the cut points for the wind
speed intervals, or |
col_pal |
Character string indicating the name of the
|
calm_wind |
Numeric value as the upper limit for wind speed that is considered calm (default 0). |
legend_title |
Character string to be used for the legend title. |
verbose |
Logical |
A ggplot2 object
You need to set your API Key globally using aemet_api_key()
.
Other aemet_plots:
climatestripes_station()
,
climatogram_normal()
,
climatogram_period()
,
ggclimat_walter_lieth()
,
ggstripes()
,
ggwindrose()
,
windrose_period()
Other wind:
climaemet_9434_wind
,
ggwindrose()
,
windrose_period()
windrose_days("9434",
start = "2000-12-01",
end = "2000-12-31",
speed_cuts = 4
)
Plot a windrose showing the wind speed and direction for a station over a time period.
windrose_period(
station,
start = 2000,
end = 2010,
n_directions = 8,
n_speeds = 5,
speed_cuts = NA,
col_pal = "GnBu",
calm_wind = 0,
legend_title = "Wind Speed (m/s)",
verbose = FALSE
)
station |
Character string with station identifier code(s)
(see |
start |
Numeric value as start year (format: YYYY). |
end |
Numeric value as end year (format: YYYY). |
n_directions |
Numeric value as the number of direction bins to plot (petals on the rose). The number of directions defaults to 8. |
n_speeds |
Numeric value as the number of equally spaced wind speed
bins to plot. This is used if |
speed_cuts |
Numeric vector containing the cut points for the wind
speed intervals, or |
col_pal |
Character string indicating the name of the
|
calm_wind |
Numeric value as the upper limit for wind speed that is considered calm (default 0). |
legend_title |
Character string to be used for the legend title. |
verbose |
Logical |
A ggplot2 object
You need to set your API Key globally using aemet_api_key()
.
Other aemet_plots:
climatestripes_station()
,
climatogram_normal()
,
climatogram_period()
,
ggclimat_walter_lieth()
,
ggstripes()
,
ggwindrose()
,
windrose_days()
Other wind:
climaemet_9434_wind
,
ggwindrose()
,
windrose_days()
windrose_period("9434",
start = 2000, end = 2010,
speed_cuts = 4
)