percentileRose
plots percentiles by wind direction with flexible
conditioning. The plot can display mutiple percentile lines or filled
areas.
percentileRose(mydata, pollutant = "nox", wd = "wd", type = "default", percentile = c(25, 50, 75, 90, 95), smooth = FALSE, method = "default", cols = "default", mean = TRUE, mean.lty = 1, mean.lwd = 3, mean.col = "grey", fill = TRUE, intervals = NULL, angle.scale = 45, auto.text = TRUE, key.header = NULL, key.footer = "percentile", key.position = "bottom", key = TRUE, ...)
wd
and a numeric
field to plot --- pollutant
.pollutant = "nox"
. More than
one pollutant can be supplied e.g. pollutant = c("no2", "o3")
provided there is only one type
.type
determines how the data are split
i.e. conditioned, and then plotted. The default is will produce a
single plot using the entire data. Type can be one of the built-in
types as detailed in cutData
e.g. season,
year, weekday and so on. For example, type
= "season"
will produce four plots --- one for each season.It is also possible to choose type
as another variable in
the data frame. If that variable is numeric, then the data will be
split into four quantiles (if possible) and labelled
accordingly. If type is an existing character or factor variable,
then those categories/levels will be used directly. This offers
great flexibility for understanding the variation of different
variables and how they depend on one another.
Type can be up length two e.g. type = c("season", "weekday")
will
produce a 2x2 plot split by season and day of the week. Note, when two
types are provided the first forms the columns and the second the rows.
percentile = NA
then only a mean line will be
shown.method = "default"
the supplied
percentiles by wind direction are calculated. When method =
"cpf"
the conditional probability function (CPF) is plotted and a
single (usually high) percentile level is supplied. The CPF is
defined as CPF = my/ny, where my is the number of samples in the
wind sector y with mixing ratios greater than the overall
percentile concentration, and ny is the total number of samples in
the same wind sector (see Ashbaugh et al., 1985).RColorBrewer
colours --- see the openair
openColours
function for more details. For user defined the
user can supply a list of colour names recognised by R (type
colours()
to see the full list). An example would be
cols = c("yellow", "green", "blue")
fill = FALSE
).intervals = c(0, 10, 30, 50)
angle.scale
to
another value (between 0 and 360 degrees) to mitigate such problems. For
example angle.scale = 315
will draw the scale heading in a NW
direction.TRUE
(default) or FALSE
. If
TRUE
titles and axis labels will automatically try and format
pollutant names and units properly e.g. by subscripting the 2
in NO2.key.header = "header", key.footer =
"footer"
adds addition text above and below the scale key. These
arguments are passed to drawOpenKey
via quickText
, applying
the auto.text
argument, to handle formatting.key.header
."top"
, "right"
, "bottom"
and "left"
.drawOpenKey
. See
drawOpenKey
for further details.cutData
and
lattice:xyplot
. For example, percentileRose
passes the option
hemisphere = "southern"
on to cutData
to provide southern
(rather than default northern) hemisphere handling of type = "season"
.
Similarly, common graphical arguments, such as xlim
and ylim
for plotting ranges and lwd
for line thickness when using
fill = FALSE
, are passed on xyplot
, although some local
modifications may be applied by openair. For example, axis and title
labelling options (such as xlab
, ylab
and main
)
are passed to xyplot
via quickText
to handle routine formatting.percentileRose
also
returns an object of class openair. The object includes three main
components: call
, the command used to generate the plot;
data
, the data frame of summarised information used to make the
plot; and plot
, the plot itself. If retained, e.g. using
output <- percentileRose(mydata, "nox")
, this output can be used
to recover the data, reproduce or rework the original plot or undertake
further analysis.An openair output can be manipulated using a number of generic operations,
including print
, plot
and summary
.
percentileRose
calculates percentile levels of a pollutant and plots
them by wind direction. One or more percentile levels can be calculated and
these are displayed as either filled areas or as lines.The wind directions are rounded to the nearest 10 degrees,
consistent with surface data from the UK Met Office before a
smooth is fitted. The levels by wind direction are optionally
calculated using a cyclic smooth cubic spline using the option
smooth
. If smooth = FALSE
then the data are shown in
10 degree sectors.
The percentileRose
function compliments other similar functions
including windRose
, pollutionRose
,
polarFreq
or polarPlot
. It is most useful for
showing the distribution of concentrations by wind direction and often can
reveal different sources e.g. those that only affect high percentile
concentrations such as a chimney stack.
Similar to other functions, flexible conditioning is available through the
type
option. It is easy for example to consider multiple percentile
values for a pollutant by season, year and so on. See examples below.
percentileRose
also offers great flexibility with the scale used and
the user has fine control over both the range, interval and colour.
windRose
, pollutionRose
,
polarFreq
, polarPlot
# basic percentile plot
percentileRose(mydata, pollutant = "o3")
# 50/95th percentiles of ozone, with different colours
percentileRose(mydata, pollutant = "o3", percentile = c(50, 95), col = "brewer1")
## Not run:
# # percentiles of ozone by year, with different colours
# percentileRose(mydata, type = "year", pollutant = "o3", col = "brewer1")
#
# # percentile concentrations by season and day/nighttime..
# percentileRose(mydata, type = c("season", "daylight"), pollutant = "o3", col = "brewer1")
# ## End(Not run)
Run the code above in your browser using DataLab