gam
smoothing is carried out using mgcv
.polarPlot(mydata, pollutant = "nox", x = "ws", wd = "wd",
type = "default", statistic = "mean",
resolution = "normal", limits = NA,
exclude.missing = TRUE, uncertainty = FALSE,
cols = "default", min.bin = 1, upper = NA,
angle.scale = 315, units = x, force.positive = TRUE,
k = 100, normalise = FALSE, key.header = "",
key.footer = pollutant, key.position = "right",
key = TRUE, auto.text = TRUE, ...)
wd
, another variable to plot in polar coordinates
(the default is a column "ws" --- wind speed) and a
pollutant. Should also contain date
if plots by
time period are required.pollutant = "nox"
. There can also be
more than one pollutant specified e.g. pollutant =
c("nox", "no2")
. The main use of 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", "TRUE
(the default) removes points from the plot that are too
far from the original data. The smoothing routines will
produce predictions at points where no data exist i.e.
they predict. By removing the pointTRUE
three plots
are produced on the same scale showing the predicted
surface together with the estimated lower and upper
uncertainties at the 95 the uncertainties is RColorBrewer
colours --- see the openair
openColours
function for more details. For user
defined the user can supangle.scale
to another
value (between 0 and 360 degrees) toTRUE
.
Sometimes if smoothing data with steep gradients it is
possible for predicted values to be negative.
force.positive = TRUE
ensures that predictions
remain positive. This is useful for several reasgam
function in package mgcv
. Typically,
value of around 100 (the default) seems to be suitable
and will resolve important features in the plot. The most
appropriate choice TRUE
concentrations are
normalised by dividing by their mean value. This is done
after fitting the smooth surface. This option is
particularly useful if one is interested in the patterns
of concentrations for several pkey.header = "header", key.footer = "footer1"
adds
addition text above and below the scale key. These
arguments are passed to drawOpenKey
key.footer
."top"
, "right"
, "bottom"
and
"left"
.drawOpenKey
. See drawOpenKey
for further
details.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.lattice:levelplot
and cutData
. For example,
polarPlot
passes the option hemisphere =
"southern"
on to cutData
to provide southern
(rather tpolarPlot
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 <- polarPlot(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
. See openair.generics
for further details.
polarPlot
surface data can also be extracted
directly using the results
, e.g.
results(object)
for output <-
polarPlot(mydata, "nox")
. This returns a data frame with
four set columns: cond
, conditioning based on
type
; u
and v
, the translational
vectors based on ws
and wd
; and the local
pollutant
estimate.mgcv
package that
uses Generalized Additive Models. While methods do
exist to find an optimum level of smoothness, they are
not necessarily useful. The principal aim of
polarPlot
is as a graphical analysis rather than
for quantitative purposes. In this respect the smoothing
aims to strike a balance between revealing interesting
(real) features and overly noisy data. The defaults used
in polarPlot
are based on the analysis of data
from many different sources. More advanced users may wish
to modify the code and adopt other smoothing approaches.
Various statistics are possible to consider e.g. mean,
maximum, median. statistic = "max"
is often useful
for revealing sources.
Wind direction is split up into 10 degree intervals and
the other variable (e.g. wind speed) 30 intervals. These
2D bins are then used to calculate the statistics.
These plots often show interesting features at higher
wind speeds (see references below). For these conditions
there can be very few measurements and therefore greater
uncertainty in the calculation of the surface. There are
several ways in which this issue can be tackled. First,
it is possible to avoid smoothing altogether and use
polarFreq
. Second, the effect of setting a
minimum number of measurements in each wind
speed-direction bin can be examined through
min.bin
. It is possible that a single point at
high wind speed conditions can strongly affect the
surface prediction. Therefore, setting min.bin =
3
, for example, will remove all wind speed-direction
bins with fewer than 3 measurements before fitting
the surface. Third, consider setting uncertainty =
TRUE
. This option will show the predicted surface
together with upper and lower 95 which take account of the frequency of measurements.
Variants on polarPlot
include polarAnnulus
and polarFreq
.polarAnnulus
, polarFreq
,
percentileRose
# load example data from package
data(mydata)
# basic plot
polarPlot(mydata, pollutant = "nox")
# polarPlots by year on same scale
polarPlot(mydata, pollutant = "so2", type = "year", main = "polarPlot of so2")
# set minimum number of bins to be used to see if pattern remains similar
polarPlot(mydata, pollutant = "nox", min.bin = 3)
# plot by day of the week
polarPlot(mydata, pollutant = "pm10", type = "weekday")
# show the 95\% confidence intervals in the surface fitting
polarPlot(mydata, pollutant = "so2", uncertainty = TRUE)
Run the code above in your browser using DataLab