USDA Forest Service

Pacific Southwest Research Station

Pacific Southwest
Research Station

800 Buchanan Street
Albany, CA 94710-0011
(510) 883-8830
United States Department of Agriculture Forest Service. USDA logo which links to the department's national site. Forest Service logo which links to the agency's national site.

Publications and Products


Martin Ritchie, Pacific Southwest Research Station, Redding CA, USA



The standview package is an R-package for rendering a high-resolution-graphic stand density management diagram (DMD). A stand density management diagram is a visual aid used by foresters to evaluate stands based on stem density (number of trees per unit area) and either a mean tree size such as quadratic mean diameter, or basal area per unit area. In standview, one of two different formats may be generated. The first format is a plot in Reineke-space (Reineke 1933) and is called with the dmd.view function: dmd(ineq=i,...). The second option generates a figure in Gingrich-space (Gingrich 1967) and it is called with the gdmd.view function: gdmd.view(ineq=i, ...).

The functions presented in standview use English units as a default setting of the use.metric argument: use.metric=FALSE. When use.metric=TRUE, then the DMD will be rendered in metric units. Users should note that the change to metric units may come with an attendant change in other inputs as well. If ineq=1 or ineq=6, the user must specify a limiting sdi with the argument: max.sdi=xxx. So care should be taken when declaring ineq=1 to assure that the limiting sdi and sdi lines are rendered in proper units.

By default, stem density is trees acre-1 and basal area is square feet acre-1. Also, by default, quadratic mean diameter is in inches, and is defined as the diameter of the tree of mean basal area in a stand. If the user is employing the summation method (Long and Daniel 1990) to calculate stand density index then it is important to recognize that the stand diameter implied by the summation method is the generalized mean diameter (Zeide 1983), not the quadratic mean diameter. As such, the Gingrich-style DMD should not be used with the summation method because iso-lines for generalized diameter cannot be rendered.

Currently standview may be accessed from github. This can be done at the R console prompt with two statements:


After installing the package in R, it must be loaded at runtime with the library function:


Reineke Space Density Management Diagrams

The dmd.view function will produce a Reineke-space diagram with the natural log of stem density on the x-axis and natural log of diameter on the y-axis. Although there are 17 items in the argument list for this function, in most instances only a few will be needed as the default values will generally suffice. The most important argument is ineq; it specifies which species, or species group, is required. The ineq argument must be specified as an integer between 1 and 9 in the current version. The ineq value defines the inverse slope of the limiting sdi (most often reineke.term=1.605), the value for limiting sdi (max.sdi), as well as volume and dominant height estimation functions if appropriate.

Table 1. Definitions of species and reference for DMD rendering by index of equations (ineq) in standview.

ineq Species Reference
1 User Defined None
2 ponderosa pine Long and Shaw (2005)
3 ponderosa pine Ritchie and Zhang (In Press)
4 ponderosa pine Edminster (1988)
5 ponderosa pine Cochran and Barrett (1992)
6 California mixed-conifer Long and Shaw (2012)
7 Douglas-fir Long et al. (1988)
8 White fir Zhang et al. (2007)
9 Lodgepole pine McCarter and Long (1986)

Note that volume estimation in Reineke-space has traditionally been presented as a series of iso-volume lines which the user then employs to visually approximate the estimate. This imprecise analog approach is no longer necessary. In R, these volumes estimates can be maintained, with precision, in a data frame. Nonetheless, dmd.view will draw iso-volume lines if the user specifies invol=TRUE in the argument list (see section on dmd.volume below).

Generic DMD in Reineke Space: ineq=1

When ineq=1, dmd.view will produce a user-specified density management diagram. As such the user will need to specify the upper limit for stand density index (max.sdi), a title (dmd.title), the intermediate sdi lines (sdi.lines), the management zone (, the inverse slope of the limiting sdi (reineke.term) if it is other than 1.605. When using ineq=1, the user needs to be mindful of the units. For example, when use.metric=TRUE, the max.sdi is trees ha-1, whereas when use.metric = FALSE max.sdi must be specified as trees per acre-1.


Published DMD in Reineke Space: ineq=(2-9).

In general, the user should be able to render a DMD using a published source with a fairly sparse argument list, by relying on the default arguments. The example below uses ineq=9 to render a lodgepole pine DMD (McCarter and Long 1986).

dmd.view(ineq=9, insdr=TRUE)

In this particular example the insdr argument is set to true for SDI limits placed on right side of the figure.

Gingrich Space Density Management Diagrams

Diagrams in Gingrich space use the same range of values for ineq (Table 1). Traditionally these figures do not present volume or dominant height information so there is no volume argument (invol) or volume color argument (vcol). An example Gingrich DMD using ineq=4 (Edminster 1988):

opar <- par(mar = c(3.0,2.0,2.5,2.5))


Data Overlay

Of course a DMD with no data is fairly useless. One could plot data by hand, but that would be clunky. One may wish to overlay data from sampled stands or from growth model projections over time. This may be accomplished using functionality provided by R. Some functions you may find useful in plotting data and annotating figures are: points(), lines(), segments(), text(). The standview package comes with a sample data frame from the Goosenest Adaptive Management Area on the Klamath National Forest (Ritchie 2005) called gama05. The example below shows sampled treated plots (controls excluded) overlay with a Gingrich-style DMD using the gama05 data.

opar <- par(mar = c(3.0,2.0,2.5,2.5))
       cex=1.25, pch=21, col="black")


Volume and Dominant Height

Typically, a Reineke-space DMD will have iso-volume and/or iso-height lines. Below is an example of a Douglas-fir DMD with iso-volume lines.

opar <- par(mar = c(2.0, 2.0, 2.0, 2.0))

dmd.view(ineq=7, insdr=FALSE, invol=TRUE)


However, in the R environment these are vestigial items. A better way of determining volume is to calculate the volume and dominant height for any particular data point. The standview package allows for this with the dmd.volume function: dmd.volume(ineq=i,...).

               use.metric=FALSE) # generate volume and dom. ht.

#>        tpa     qmd       ba   volume   height
#> 1   63.056 17.5130 105.4812 2929.790 90.76496
#> 2   73.889 14.9996  90.6706 2246.178 80.76284
#> 3   50.278 17.7207  86.1127 2384.186 89.13630
#> 4  715.000  6.8884 185.0419 2554.007 45.70080
#> 5   70.263 17.2136 113.5527 3127.636 90.53257
#> 6   79.474 17.6042 134.3337 3785.930 93.49015
#> 7   72.500 16.2334 104.2040 2744.692 86.36198
#> 8   49.412 17.5382  82.8953 2274.101 88.14123
#> 9   83.333 15.5825 110.3618 2831.190 84.56041
#> 10 585.000  7.6760 187.9980 2830.228 50.22033
#> 11  70.000 16.3437 101.9826 2696.262 86.53784
#> 12  53.611 16.6026  80.5997 2128.080 84.97135
#> 13  39.167 17.4449  65.0107 1748.601 84.82670
#> 14  88.897 14.1271  96.7655 2303.812 78.06940
#> 15  70.278 14.7308  83.1763 2026.902 79.04855
#> 16 714.167  7.0979 196.2397 2773.160 46.99829
#> 17  30.278 18.2517  55.0125 1501.887 84.45587
#> 18 737.059  7.3297 215.9743 3129.146 48.48166
#> 19  64.412 15.4244  83.5816 2103.121 81.50138
#> 20 676.199  8.7899 284.9507 4766.447 57.25879

Note that by default, dmd.volume produces estimates in English units. For metric units, the argument list must include use.metric=TRUE.

File Formats

Figures can be rendered in r a number of different formats. The pdf function works very well for producing publication quality images (pdf("myDMD.pdf", ...)). My general practice is to generate a pdf, and then convert to a .jpg file if needed for a particular outlet. Other graphics options are bmp (bmp(filename = "myDMD.bmp", ...)), jpeg (jpeg(filename = "myDMD.jpeg", ...)), png (png(filename = "myDMD.png",...)) and tiff ( tiff(filename = "myDMD.tiff",...")). It is important that any of these should be closed with a call to after rendering the plot. Examples of usage with pdf are shown in the standview help files.