# rateplot: Functions to plot rates from a table classified by age and... In Epi: A Package for Statistical Analysis in Epidemiology

## Description

Produces plots of rates versus age, connected within period or cohort (`Aplot`), rates versus period connected within age-groups (`Pplot`) and rates and rates versus date of birth cohort (`Cplot`). `rateplot` is a wrapper for these, allowing to produce the four classical displays with a single call.

## Usage

 ``` 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``` ```rateplot( rates, which = c("ap","ac","pa","ca"), age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, a.grid = grid, p.grid = grid, c.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), a.lim = range( age, na.rm=TRUE ) + c(0,diff( range( age ) )/30), p.lim = range( per, na.rm=TRUE ) + c(0,diff( range( age ) )/30), c.lim = NULL, ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), a.lab = "Age at diagnosis", p.lab = "Date of diagnosis", c.lab = "Date of birth", ylab = "Rates", type = "l", lwd = 2, lty = 1, log.ax = "y", las = 1, ann = FALSE, a.ann = ann, p.ann = ann, c.ann = ann, xannx = 1/20, cex.ann = 0.8, a.thin = seq( 1, length( age ), 2 ), p.thin = seq( 1, length( per ), 2 ), c.thin = seq( 2, length( age ) + length( per ) - 1, 2 ), col = par( "fg" ), a.col = col, p.col = col, c.col = col, ... ) Aplot( rates, age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, a.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), a.lim = range( age, na.rm=TRUE ), ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), a.lab = names( dimnames( rates ) )[1], ylab = deparse( substitute( rates ) ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, c.col = col, p.col = col, c.ann = FALSE, p.ann = FALSE, xannx = 1/20, cex.ann = 0.8, c.thin = seq( 2, length( age ) + length( per ) - 1, 2 ), p.thin = seq( 1, length( per ), 2 ), p.lines = TRUE, c.lines = !p.lines, ... ) Pplot( rates, age = as.numeric( dimnames( rates )[[1]] ), per = as.numeric( dimnames( rates )[[2]] ), grid = FALSE, p.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), p.lim = range( per, na.rm=TRUE ) + c(0,diff(range(per))/30), ylim = range( rates[rates>0], na.rm=TRUE ), p.lab = names( dimnames( rates ) )[2], ylab = deparse( substitute( rates ) ), at = NULL, labels = paste( at ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, ann = FALSE, cex.ann = 0.8, xannx = 1/20, a.thin = seq( 1, length( age ), 2 ), ... ) Cplot( rates, age = as.numeric( rownames( rates ) ), per = as.numeric( colnames( rates ) ), grid = FALSE, c.grid = grid, ygrid = grid, col.grid = gray( 0.9 ), c.lim = NULL, ylim = range( rates[rates>0], na.rm=TRUE ), at = NULL, labels = paste( at ), c.lab = names( dimnames( rates ) )[2], ylab = deparse( substitute( rates ) ), type = "l", lwd = 2, lty = 1, col = par( "fg" ), log.ax = "y", las = 1, xannx = 1/20, ann = FALSE, cex.ann = 0.8, a.thin = seq( 1, length( age ), 2 ), ... ) ```

## Arguments

 `rates` A two-dimensional table (or array) with rates to be plotted. It is assumed that the first dimension is age and the second is period. `which` A character vector with elements from `c("ap","ac","apc","pa","ca")`, indication which plots should be produced. One plot per element is produced. The first letter indicates the x-axis of the plot, the remaining which groups should be connected, i.e. `"pa"` will plot rates versus period and connect age-classes, and `"apc"` will plot rates versus age, and connect both periods and cohorts. `age` Numerical vector giving the means of the age-classes. Defaults to the rownames of `rates` as numeric. `per` Numerical vector giving the means of the periods. Defaults to the columnnames of `rates` as numeric. `grid` Logical indicating whether a background grid should be drawn. `a.grid` Logical indicating whether a background grid on the age-axis should be drawn. If numerical it indicates the age-coordinates of the grid. `p.grid` do. for the period. `c.grid` do. for the cohort. `ygrid` do. for the rate-dimension. `col.grid` The colour of the grid. `a.lim` Range for the age-axis. `p.lim` Range for the period-axis. `c.lim` Range for the cohort-axis. `ylim` Range for the y-axis (rates). `at` Position of labels on the y-axis (rates). `labels` Labels to put on the y-axis (rates). `a.lab` Text on the age-axis. Defaults to "Age". `p.lab` Text on the period-axis. Defaults to "Date of diagnosis". `c.lab` Text on the cohort-axis. Defaults to "Date of birth". `ylab` Text on the rate-axis. Defaults to the name of the rate-table. `type` How should the curves be plotted. Defaults to `"l"`. `lwd` Width of the lines. Defaults to 2. `lty` Which type of lines should be used. Defaults to 1, a solid line. `log.ax` Character with letters from `"apcyr"`, indicating which axes should be logarithmic. `"y"` and `"r"` both refer to the rate scale. Defaults to `"y"`. `las` see `par`. `ann` Should the curves be annotated? `a.ann` Logical indicating whether age-curves should be annotated. `p.ann` do. for period-curves. `c.ann` do. for cohort-curves. `xannx` The fraction that the x-axis is expanded when curves are annotated. `cex.ann` Expansion factor for characters annotating curves. `a.thin` Vector of integers indicating which of the age-classes should be labelled. `p.thin` do. for the periods. `c.thin` do. for the cohorts. `col` Colours for the curves. `a.col` Colours for the age-curves. `p.col` do. for the period-curves. `c.col` do. for the cohort-curves. `p.lines` Should rates from the same period be connected? `c.lines` Should rates from the same cohort be connected? `...` Additional arguments pssed on to `matlines` when plotting the curves.

## Details

Zero values of the rates are ignored. They are neiter in the plot nor in the calculation of the axis ranges.

## Value

`NULL`. The function is used for its side-effect, the plot.

## Author(s)

Bendix Carstensen, Steno Diabetes Center, http://BendixCarstensen.com

`apc.frame`

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20``` ```data( blcaIT ) attach(blcaIT) # Table of rates: bl.rate <- tapply( D, list(age,period), sum ) / tapply( Y, list(age,period), sum ) bl.rate # The four classical plots: par( mfrow=c(2,2) ) rateplot( bl.rate*10^6 ) # The labels on the vertical axis could be nicer: rateplot( bl.rate*10^6, at=10^(-1:3), labels=c(0.1,1,10,100,1000) ) # More bells an whistles par( mfrow=c(1,3), mar=c(3,3,1,1), oma=c(0,3,0,0), mgp=c(3,1,0)/1.6 ) rateplot( bl.rate*10^6, ylab="", ann=TRUE, which=c("AC","PA","CA"), at=10^(-1:3), labels=c(0.1,1,10,100,1000), col=topo.colors(11), cex.ann=1.2 ) ```

### Example output

```Attaching package: 'Epi'

The following object is masked from 'package:base':

merge.data.frame

1955         1960         1965         1970      1975
25 3.000000e-07 0.0000003000 0.0000001000 0.0000004000 0.0000012
30 1.700000e-06 0.0000018000 0.0000012000 0.0000008000 0.0000009
35 3.200000e-06 0.0000031000 0.0000035000 0.0000042000 0.0000032
40 1.040000e-05 0.0000105000 0.0000091000 0.0000104000 0.0000127
45 2.860000e-05 0.0000252000 0.0000261000 0.0000304000 0.0000316
50 6.639999e-05 0.0000703000 0.0000643000 0.0000646000 0.0000847
55 1.271000e-04 0.0001339000 0.0001459000 0.0001464000 0.0001638
60 2.011000e-04 0.0002398000 0.0002669000 0.0002755000 0.0002853
65 2.440000e-04 0.0003316000 0.0004211999 0.0004777000 0.0005037
70 3.281000e-04 0.0004231000 0.0005287000 0.0006601000 0.0007464
75 4.554001e-04 0.0004793999 0.0006204999 0.0008464998 0.0010421
```

Epi documentation built on March 18, 2018, 1:41 p.m.