geoplot: Plots lat and lon coordinates using Mercator or Lambert...

Description Usage Arguments Details Value Side Effects See Also Examples

View source: R/geoplot.R

Description

Creates a plot of given data, as the "plot" function but allows input data to have latitude and longitude coordinates.Coordinates are latitude and longitude in degrees (default) or x, y in m (or other units).

Usage

1
2
3
4
5
6
7
8
9
geoplot(lat = NULL, lon = 0, type = "p", pch = "*", xlim = c(0, 0),
  ylim = c(0, 0), b0 = 65, r = 1.05, country = "default", xlab = " ",
  ylab = " ", option = "cut", grid = TRUE, new = FALSE, cont = FALSE,
  cex = 0.9, col = 1, lcont = c(0.13, 0.21), plotit = TRUE,
  reitur = FALSE, smareitur = FALSE, reittext = FALSE, cexrt = 0.7,
  csirt = NULL, axratio = 1, lwd = 0, lwd1 = 0, locator = FALSE,
  axlabels = TRUE, projection = "Mercator", b1 = b0, dlat = 0,
  dlon = 0, jitter = 0, zoom, csi = NULL, xaxdist = 0.2,
  yaxdist = 0.3)

Arguments

lat,lon

Latitude and longitude of data (or x and y coordinates), negative for southern latitudes and western longitudes. May be supplied as two vectors or as a list or dataframe lat (or x) including vectors lat\$lat and lat\$lon (x\$x and x\$y if projection = none). If xlim and ylim are given the arguments lat and lon are not required.

type

Options are the same as in the plot function i.e "l" for lines, "n" for not plotting the data, "p" for points etc. Default value is "p"

pch

Type of symbol drawn in points. Default is "*". Any other character or symbol can be used, seet the help on points.

xlim

x limits of drawing (longitudinal direction). If not given the program finds the limits as the range of the data times the parameter r (1.05 default). xlim can be a list (dataframe) with components lat and lon (x and y if projection = "none").

ylim

y limits of drawing (latitudinal direction). If not given and xlim is not a list the program finds the ulimits as the range of the data times the parameter r (1.05).

b0

Base latitude for the Mercator or Lambert transform. Default value is 65 (typical for Iceland). If Mercator transform is used values close to the mean of the data are recommended except the data extend very far north, (> 75 th degree) then b0 should be close to the northern limits of the data).

r

Size of area which is plotted. r = 1.0 means exactly the range of the datapoints, but r = 1.5 means that the range is 1.5 times the range of data. Default value is 1.05. Does not matter if xlim and ylim are given.

country

Country that is plotted. Options are: 1. island 1300 points (iceland) 2. bisland 20000 points (iceland fine) 3. greenland 62000 points 4. faeroes 2100 points 5. eyjar 2200 points(islands around iceland) 6. none no country plotted Which map is used depends on the size of the area plotted. If small part of the coast is seen bisland is used, else Iceland. Isands can be added later by geolines(eyjar). Default is set by a variable with the name COUNTRY.DEFAULT. COUNTRY.DEFAULT <- "island" makes iceland the default country. The program geoworld can be used to add all coastlines that intersect the map and also to make new countries (see geoworld).

xlab

X-label. Default value is " "

ylab

Y-label. Default value is " "

option

Can be either "cut" or "nocut". If "nocut" the plot always fills the plotted area but if "cut" the plot does not fill it in the direction where the range of data is minimum. It has to be kept in mind that the program always keeps the same scale vertically and horizontally. Default value is "cut". Not effective when contourplots are plotted.

grid

If grid is TRUE meridians and paralells are plotted, else not. Default value is TRUE.

new

If new is FALSE the plot is added to the current plot otherwise a new plot is made. Default value is FALSE. Similar to the Splus command "par(new = TRUE)".

cont

A parameter to reserve space for legend for contours besides the plot. Default value is "FALSE". Rarely used at the legends are usually put somewhere in the graph.

cex

Relative size of character and symbols (see the help on the parameter cex). The size of plotted characeters is cex time the parameter csi that can be seen by par()\$csi. In earlier versions of geoplot the parameter csi was set but csi is a parameter that can not be set in R.

col

The color number used to for the plot. Default value is 1 that is usually black.

lcont

Limits of area preserved for lables and contour plot as ration of plotting area. Default value is c(0.13, 0.21). That means that the labels take 13% of the plotting area but the figure 79%. (Labels to left, figure to left.) 0.08 to 0.1 is a reasonable difference. Only used when cont = TRUE which is seldom used as described erlier.

plotit

If FALSE plot is only initialized but not plotted. If used other programs are used to fill the plot (geolines, geocontour, geopolygon etc). Most often used in multiple plots.

Used in connection with geocontour.fill to fewer files but the plot command is given again with new = TRUE when geocontour.fill is called. Plot = FALSE does not work if axeslabels = FALSE. Something seems to have to be on the graph for proper setup.

reitur

Reitur means statistical square in Icelandic. If true the division of the axes is idendical to the distribution of the ocean around Iceland in statistical squares. Means dlat = 0.5;dlon = 1.

smareitur

If true the division of the axes is idendical to the distribution of the ocean around Iceland in subsquares.dlat = 0.25;dlon = 0.5

reittext

If true the number of each square is written in the center of the square. Only meaningful for Icelandic waters.

cexrt

Relative size of reittext text in statistical squares (cexrt*csi). Default value is 0.7.

csirt

Size of reittext. Default value is 0.1. Only for compatibility with older Splus programs but cexrt should be used as the parameter csi can not be set in R:

axratio

Parameter usually not changed by the user.

lwd

Line width for plot (grid and axes). Default value is the value set when the program was called.(usually 1). Higher values correspond to wider lines.

lwd1

Line width for plot country. Default value is the value set when the program was called (usually 1). Higher values correspond to wider lines.

locator

Some kind of a simple zoom command. If locator is TRUE the user points with the mouse on the limits of the plot he wants to make. Needs a plot made by geoplot on the screen. Same as if zoom is used.

axlabels

If FALSE no numbers are plotted on the axes. Default value is TRUE.

projection

Projection used to make the plot. Options are "Mercator", "none" and "Lambert". Default value is "Mercator". If projection = "none" data is assumed to be x, y.

b1

Second latitude to define Lambert projection.

dlat

Defines the grid, to make a grid on the lat axis, 1 is a number on axis and a line at every deg. Not usualy set by user.

dlon

Same as dlat, but for lon.

jitter

useful if many datapoints have the same coordinates, points are jittered randomly to make common values look bigger. jitter = 0.016 is often about right but you may want to have jitter smaller or bigger varying on plot.

zoom

If TRUE the mouse is used to point to two points on the current map with those two new points becoming the new corner points on a new map. . Same as the parameter locator in older geoplot versions.

csi

Size of character. This parameter can not be set in R but for compatibility with old Splus scripts the parameter cex is readjusted by cex = cex*csi/0.12. Use of this parameter is not recommended. Default value is NULL i.e not used.

xaxdist

Distance from plot to the labels on the xaxis (dist or r argument to geoaxis. Default value is 0.2 but higher value mean that axlabels is further away from the plot. Further flexibility with axes can be reached by calling geoplot with axlabels = FALSE and geoaxis aferwards.

yaxdist

Distance from plot to the labels on the yaxis (dist or r argument to geoaxis. Default value is 0.3 but higher value mean that axlabels is further away from the plot.

Details

The program performs the Mercator(default) or Lambert transformation of the data in degrees and plots it. The plot is scaled such that 1cm in vertical and horizontal directions correspond to the same distance. The program is used to initialize drawings to be used by programs, i.e. geolines, geopolygon, geopoints, geotext, geosymbol, geogrid, geocontour.fill, geoimage and geocontour. The inputs to the program are decimal numbers negative for western longitudes e.g.lat = 65.75 lon = -25.8. Whether the program interprets data as lat, lon or x, y depends on the parameter projection. If projection is "none" data is interpreted as x, y else lat, lon. When the data is interpreted as x, y lists are assumed to have the components \$x and \$y, else \$lat and \$lon.Geoplot is often used with type = "n" so the datapoints used to set up the drawing are not seen. Calling geoplot with plotit = FALSE sets up the drawing without putting anything on the screen ( or page).

Value

No values are returned. The graphical setup is stored in a global list called geopar. That list is accessed by other program that use the same setup.

Side Effects

There should be no side effects. The program changes a number of graphical parameters but the old parameters are restored before.

See Also

geolines, geopolygon, geotext, geosymbols, geogrid, geopar, geocontour.fill, geolocator, geocontour, reitaplott, geodefine, Proj.

Examples

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
## Not run: Examples shown here below also include calls to the other functions
in the geopackage.  Further explanations of these functions can be
found in the appropriate help files.

Contour plot of haddock catch in icelandic waters based on logbooks.
A color scheme
where color 0 is white, 1 black and 2-150 gradually changing from
white to black is used.  The data is for 6 years and is stored in a
list hadcatch with 6 components.  Circles showing haddock catch in
the Icelandic groundfish survey is added on top of the plot with the
function geosymbols but utbrteg is a dataframe with information on all
catch in the Icelandic groundfish survey (all names in Icelandic ysa
means haddock and ar year).  The function bwps is a call to the
postscript function with the indicated color scheme.  Designed for
Splus and has to be changed for R as the color schemes there are quite
different.  This applies to all the examples below.

lev <- c(0.5, 1, 2, 4, 6)
col <- c(0, 30, 50, 70, 90, 150)
txt <- c(1993, 1995, 2000, 2002, 2005, 2006)
par(mfrow = c(3, 2));par(mex = 0.01)
bwps(file = "hadcatchutbr.ps", height = 6.8, width = 6.5, horizontal = FALSE)
for(i in 1:6) {
 SMB.std.background(grid = FALSE, axlabels = FALSE)
 geocontour.fill(hadcatch[[i]], levels = lev, col = col,
    white = TRUE, working.space = 2e6)
 gbplot(200)
 geotext(67.3, -27.6, txt[i], csi = 0.16, adj = 0)
 geopolygon(island, col = 0);geolines(island)
 tmp <- utbrteg[utbrteg$ar == txt[i], ] # select the year
 geosymbols(tmp, z = tmp$ysa.kg, circles = 0.2,
    sqrt = TRUE, lwd = 1)# amount of haddock
 geopoints(tmp, pch = 16, csi = 0.05)
}
dev.off()

# plot x, y data
geoplot(x$x, x$y, projection = "none", type = "n")

geoplot(x, projection = "none", type = "n")
# does the same thing.

# The packages maps and mapdata need to be installed
# worldHires is a very detailed database of coastlines from the
# package mapdata.  Could be problematic if used with fill = TRUE)
# Allowed.size is the maximum allowed size of polygons.
library(map) # world coastlines and programs
library(mapdata) # more detailed coastlines
geoplot(xlim = c(20, 70), ylim = c(15, 34))
geoworld(database = "worldHires", fill = TRUE, col = 30, allowed.size = 30000)

geoplot(xlim = c(20, 70), ylim = c(15, 34), dlat = 10, dlon = 10)
geoworld(database = "world", fill = TRUE, col = 30) #

geoplot(xlim = c(-10, 70), ylim = c(71, 81), b0 = 80,
  dlat = 2, dlon = 10) # 0 must be high here else
geoworld(database = "world", fill = TRUE, col = 30) #the plot fails.

# Lambert projection,
geoplot(xlim = c(-10, 70), ylim = c(71, 81),
  dlat = 2, dlon = 10, projection = "Lambert")
geoworld(database = "world", fill = TRUE, col = 30)

# Lambert projection, get the axis closer with the mgp command
par(mgp = c(2, 0, 0))
geoplot(xlim = c(-10, 70), ylim = c(71, 81),
  dlat = 2, dlon = 10, projection = "Lambert", cex = 1.1)
geoworld(database = "world", fill = TRUE, col = 30)

# Example with capelin data.  (lodna meanns capelin).  lodna.2 is a
# data.frame with components lat,  lon and z.
geoplot(lodna.2, type = "l")
geopoints(lodna.2)
geosymbols(lodna.2, z = lodna.2$z, colplot = TRUE,
  parbars = 0.05, levels = vor.levels, label.location = labloc)


geoplot(lodna.2, type = "l")
 geosymbols(lodna.2, z = lodna.2$z, perbars = 0.1)

geoplot(lodna.2, type = "l")
 geosymbols(lodna.2, z = log(1+lodna.2$z), perbars = 0.1)


limits <- list(lat = c(63, 68), lon = c(-30, -10))
geoplot(xlim = limits, type = "n", grid = FALSE, axlabels = TRUE, plot = FALSE)
tmp <- geoexpand(lodna.2.grd) # expand the grid
# has defined ther area vor.area and data outside it are set  to NA.
i <- geoinside(tmp, vor.area.new, option = 0)
zgr <- z.lodna.2;zgr[-i] <- NA
geocontour.fill(lodna.2.grd, z = zgr, white = TRUE,
  label.location = labloc, levels = vor.levels)
geoplot(xlim = limits, type = "n", grid = FALSE, axlabels = TRUE, new = TRUE)
#geolines(lodna.2, lwd = 1)
gbplot(c(200, 500)) # Depth contours.

# make a plot of number within a square, calculate the total number of
#cod (torskur) within a square (reitur) and put the text number of
#square and total number of cod in the center of the square (number of
#cod below number of square).  Apply.shrink is similar to tapply
#returning the data in different form and is included with the geo library

geoplot(island, r = 1.2, type = "n", reitur = TRUE)
x <- apply.shrink(data$torskur.stk, data$reitur, sum,
  names = c("reitur", "torskur.stk"))
x1 <- r2d(x$reitur)
geotext(x1, z = paste(x$reitur, round(x$torskur.stk, 1), sep = "\n"))

# Plot filled circles.  The color scheme used is the same as described
# color 0 white, 1 black and 2 - 155 white-black see bwps
# in geosymbols the argument color means size (in inches)
# when the fill.circles = TRUE.  The data used  AfliBySquareMonthYear have
# the columns year, month , square and catch.
# the function r2d changes square (reitur in Icelandic) to position
# Text is put in the middle of the circles where catch exceeds 1000
# tonnes.

my.colors = c(0.004, 0.04, 0.1, 0.15, 0.20, .25, 100)
lev <- c(0.2, 2, 7.5, 10, 20, 50)

yy <- c(1932:1939)
tmp4 <- AfliBySquareMonthYear
tmp4$catch <- tmp4$catch/1000
for (ar in yy) {
  bwps(file = paste(ar, ".ps", sep = ""))
  par(omi = c(0, 0, 0, 2))
  par(mfrow = c(4, 3))
  par(mex = 0.01)

  for(man in 1:12){
    tmp1 <- tmp4[tmp4$year == ar & tmp4$month == man, ]
    SMB.std.background(axlabels = FALSE, country = "none", plotit = FALSE)
    if(nrow(tmp1) > 0) {
      tmp2 <- apply.shrink(tmp1$catch, tmp1$square, sum,
        names = c("square", "catch"))
      tmp2 <- tmp2[order(-tmp2$catch), ]

      tmp3 <- data.frame(r2d(tmp2$square))
      geosymbols(tmp3, z = tmp2$catch, fill.circles = TRUE, col = 60,
        levels = lev, colors = my.colors, bordercol = 0, border = TRUE)
      geopolygon(island, col = 30)
      geolines(eyjar, lwd = 3, col = 30)
      j <- tmp2$catch > 1
      if(any(j)) {
        tmp3 <- tmp3[j, ]
        tmp2 <- tmp2[j, ]
        geotext(lat = tmp3$lat, lon = tmp3$lon, z = tmp2$catch,
          angle = 45, csi = 0.1)
      }
      geotext(lat = c(65.2), lon = (-18), z = paste(month.abb[man],
        round(sum(tmp2$catch, na.rm = TRUE)), sep = "\n"), csi = 0.2)
    }
    else {geotext(lat = c(65.2), lon = (-18),
            z = paste(month.abb[man], "0", sep = "\n"), csi = 0.2)}
  }
  geotext(63, -10, ar, adj = 1, csi = 0.18)
  dev.off()
}

## End(Not run)

geo documentation built on May 29, 2017, 5:36 p.m.